Ich habe ein schnelles Modell namens Activity
, an das optional ein coordinate
angehängt werden kann.RestKit RKObjectMapping Swift Optional
import MapKit
class Activity: NSObject {
var coordinate: CLLocationCoordinate2D?
class func objectMapping() -> RKObjectMapping {
let mapping = RKObjectMapping(forClass: self)
let coordinateMapping = RKAttributeMapping(fromKeyPath: "coordinate", toKeyPath: "coordinate")
coordinateMapping.valueTransformer = RKCLLocationCoordinate2DValueTransformer()
mapping.addPropertyMapping(coordinateMapping)
return mapping
}
}
Wenn meine Anwendung startet aber das gibt mir:
2015-05-05 12: 14: 30,741 Probe [54338: 531558] *** App beenden aufgrund nicht abgefangene Ausnahme 'NSUnknownKeyException' , Grund: '[setValue: forUndefinedKey:]: Diese Klasse ist für die Schlüsselkoordinate nicht Schlüsselcodierung-kompatibel.'
Wenn ich coordinate
als nicht optional und liefern eine Standard die Anwendung läuft ändern.
Also meine Frage ist, wie verwende ich RestKit in swift in Bezug auf Optionals?
Warum Sie es optional sein wollen, wenn es sich um eine einfache Zahl ist? Vermutlich generiert der Compiler keine Accessoren für die Eigenschaften, wenn sie optional sind ... – Wain
Nicht alle Aktivitäten haben eine angefügte Breite und Länge, also dachte ich, sie würde es machen, da es optional ist. Ich sehe Ihren Punkt für reguläre Zahlen, aber ich könnte die gleiche Frage für etwas Komplexeres stellen wie 'CLLocationCoordinate2D' –
Ich habe nie RestKit verwendet, also bin ich mir der internen Abläufe nicht sicher ... jedoch habe ich die Quelle & fand dies in der Implementierung für den Initialisierer für 'RKAttributeMapping' (' RKAttributeMapping (fromKeyPath: "Koordinate", toKeyPath: "Koordinate") ') ... die erste Codezeile im Initialisierer ist:' NSAsssert (sourceKeyPath || destinationKeyPath , @ "Sowohl der Quell - als auch der Zielschlüsselpfad können nicht Null sein"); '. Für mich würde dies bedeuten, dass der Absturz verursacht wird, da & ldquor; Koordinate "optional ist (& somit & ldquor; Null") und & ldquor; Koordinate "für beide Schlüsselwege verwendet wird (& somit beide & ldquor; Null"). –