Hat jemand Rubymotion mit dem RKObjectManager von RestKit zum Laufen gebracht und erfolgreich einige Objekte von einem Server geladen? Ich habe eine Menge Probleme damit. Ich habe RestKit's RKClient funktioniert gut. Ich kann erfolgreich abrufen und posten, was großartig ist. Aber ich kann keine Ressourcen mit RKObjectManager laden. Mein Rakefile sieht wie folgt aus:
$:.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
Mein App-Delegierter sieht wie folgt aus:
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
und mein Stub TestViewController sieht wie folgt aus:
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
Leider können Sie nicht genau mit diesem Code testen, weil Sie mein Authentifizierungs-Token für die Website benötigen würden.
En mapAttributes Methode der RKObjectMapping Klasse (oben auskommentiert) wird nicht funktionieren. Wenn ich es lasse, gibt die App die Checkpoints 1-3 aus und flippt dann aus. rake --trace zeigt dies:
** 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
Wenn ich die mapAttributes-Zeile auskommentiere und eine andere (längere) Version der Objektzuordnung verwende (die 3 Zeilen, die vor Prüfpunkt 4 unkommentiert gelassen wurden), komme ich durch alle Prüfpunkte, erhalte aber folgendes, wenn ich rake --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
Ich habe den ganzen Tag mit diesen Fehlern zu kämpfen. Wenn jemand eine Idee hat, lassen Sie mich bitte wissen. Hilfe wird sehr geschätzt. Danke!
Pachun