Mam szybki model o nazwie Activity
, który może opcjonalnie mieć dołączoną do niego coordinate
.RestKit RKObjectMapping Swift Opcjonalnie
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
}
}
Podczas uruchamiania mojej aplikacji to jednak daje mi:
2015-05-05 12: 14: 30,741 próbki [54338: 531558] *** Zakończenie aplikację spowodowane nieprzechwyconego wyjątku 'NSUnknownKeyException' , reason: '[setValue: forUndefinedKey:]: ta klasa nie jest zgodna z kodowaniem kluczem wartości kluczowej. "
Jeśli zmienię coordinate
na opcję nieobowiązkową i podam domyślną aplikację, która działa.
Moje pytanie brzmi: jak używać RestKit w wersji szybkiej w odniesieniu do opcji?
Dlaczego ma to być opcja, gdy jest to zwykły numer? Prawdopodobnie kompilator nie generuje akcesorów dla właściwości, jeśli są one opcjonalne ... – Wain
Nie wszystkie czynności mają przypisaną szerokość i długość geograficzną, więc myślałem, że to zrobi, ponieważ jest to opcjonalne. Widzę twój punkt dla regularnych liczb, ale mógłbym postawić to samo pytanie dla czegoś bardziej złożonego jak 'CLLocationCoordinate2D' –
Nigdy nie używałem RestKit, więc nie jestem pewien wewnętrznych działań ... jednak przeglądałem źródło i znalazłem to w implementacji dla inicjalizatora dla 'RKAttributeMapping' (' RKAttributeMapping (fromKeyPath: "coordinate", toKeyPath: "coordinate") ') ... pierwsza linia kodu w inicjalizatorze to:' NSAssert (sourceKeyPath || destinationKeyPath , @ "Zarówno ścieżka źródłowa, jak i docelowa nie mogą być puste"); '. Dla mnie oznacza to, że katastrofa jest spowodowana, ponieważ "współrzędna" jest opcjonalna (a więc 'nil') i' współrzędna' jest używana dla obu keypathów (i dlatego oba są 'nil'). –