Кто-нибудь получил Rubymotion для работы с RKObjectManager RestKit и успешно загрузил некоторые объекты с сервера? У меня с этим много проблем. У меня очень хорошо работает RKClient от RestKit. Я могу получить и отправить сообщение успешно, что здорово. Но я не могу загружать ресурсы с помощью RKObjectManager. Моя Rakefile выглядит следующим образом:Rubymotion & RestKit
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project'
Motion::Project::App.setup do |app|
# Use `rake config' to see complete project settings.
app.name = 'RestKitTest'
app.frameworks += %w(CoreData CFNetwork Security MobileCoreServices SystemConfiguration QuartzCore)
app.vendor_project('vendor/RestKit', :xcode, :target => 'RestKit', :headers_dir => '../Headers/RestKit/')
end
мое приложение делегата выглядит следующим образом:
class AppDelegate
def application(application, didFinishLaunchingWithOptions:launchOptions)
@window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds
@window.rootViewController = TestViewController.alloc.init
@window.rootViewController.wantsFullScreenLayout = true
@window.makeKeyAndVisible
true
end
end
и мой окурок TestViewController выглядит следующим образом:
class TestViewController < UIViewController
def init
super
puts "checkpoint 1"
manager = RKObjectManager.managerWithBaseURLString "http://mlpong.herokuapp.com"
puts "checkpoint 2"
mapping = RKObjectMapping.mappingForClass League.class
puts "checkpoint 3"
# mapping.mapAttributes("id", "name", "url", nil)
mapping.mapKeyPath("id", toAttribute:"id")
mapping.mapKeyPath("name", toAttribute:"name")
mapping.mapKeyPath("url", toAttribute:"url")
puts "checkpoint 4"
manager.mappingProvider.setObjectMapping(mapping, forKeyPath:"")
puts "checkpoint 5"
manager.loadObjectsAtResourcePath("/leagues.json?auth_token=my_auth_token", delegate:self)
puts "checkpoint 6"
self
end
def objectLoader(loader, didFailWithError:error)
puts "failed with error: #{error.domain}"
end
def objectLoader(loader, didLoadObjects:objects)
puts "success!"
end
end
, к сожалению, вы не можете проверить с этот точный код, потому что вам нужен мой токен для сайта.
mapAttributes метод RKObjectMapping класса (закомментировано выше) не будет работать. Если я оставлю это, приложение выведет контрольные точки 1-3, а затем уроды. грабли --trace показывает это:
** Invoke default (first_time)
** Invoke simulator (first_time)
** Invoke build:simulator (first_time)
** Execute build:simulator
** Execute simulator
/usr/bin/defaults write com.apple.iphonesimulator "SimulateDevice" "'iPhone'"
DYLD_FRAMEWORK_PATH="/Applications/Xcode.app/Contents/Developer/../Frameworks":"/Applications/Xcode.app/Contents/Developer/../OtherFrameworks" /Library/RubyMotion/bin/sim 2 1 5.1 "/Applications/Xcode.app/Contents/Developer" "./build/iPhoneSimulator-5.1-Development/RestKitTest.app"
checkpoint 1
checkpoint 2
checkpoint 3
(main)> ** Execute default
Если я закомментируйте строку mapAttributes, и использовать другой (более длинный) версию отображения объекта (3 линии осталось раскомментирована перед тем контрольно-пропускной пункт 4), я получаю через все контрольно-пропускные пункты, но получить это, когда я грабли --trace:
** Invoke default (first_time)
** Invoke simulator (first_time)
** Invoke build:simulator (first_time)
** Execute build:simulator
** Execute simulator
/usr/bin/defaults write com.apple.iphonesimulator "SimulateDevice" "'iPhone'"
DYLD_FRAMEWORK_PATH="/Applications/Xcode.app/Contents/Developer/../Frameworks":"/Applications/Xcode.app/Contents/Developer/../OtherFrameworks" /Library/RubyMotion/bin/sim 2 1 5.1 "/Applications/Xcode.app/Contents/Developer" "./build/iPhoneSimulator-5.1-Development/RestKitTest.app"
checkpoint 1
checkpoint 2
checkpoint 3
checkpoint 4
checkpoint 5
checkpoint 6
(main)> terminate called without an active exception** Execute default
я застрял с этими ошибками весь день. Если у кого-нибудь есть идеи, сообщите мне. Помощь очень ценится. Спасибо,
Pachun
Ваша первая проблема в том, что 'mapAttributes' следует использовать так:' mapping.mapAttributes ([ "ID", "имя", " URL "])'. Тем не менее, я до сих пор не знаю, как пройти вторую ошибку. (Этот код работает нормально в стандартном проекте Xcode/Objective-C, но не в проекте rubymotion) –