2017-01-22 54 views
1

我正在使用Siesta从我的服务器获取资源。我正在按照用户指南配置一个转换器,以自动将JSON字符串转换为Realm对象。从基于Siesta实体的JSON初始化Realm对象失败

它适用于单个对象,但不知何故,这些对象的数组会失败。

这里是我的精简型号:

public class ObservingSite: Object { 
    dynamic var uuid: String = "" 
    dynamic var name: String = "" 
} 

而午睡变压器,作为例子,在我Service子类:

self.configureTransformer("/\(self.APIVersion)/observingsites/") { 
     JSON($0.content as AnyObject).arrayValue.map { ObservingSite(value: $0) } 
    } 

JSONSwiftyJSON定义的数据类型。

狂错误信息获取:

2017-01-22 20:04:00.848504 Arcsecond Demo macOS[25453:8681143] [General] An uncaught exception was raised 

2017-01-22 20:04:00.848592 Arcsecond Demo macOS[25453:8681143]  [General] Invalid value '{ 
    "name" : "Adelaide Observatory", 
    "uuid" : "99b98d50-d831-48c2-89b3-2ff6e4c9f4aa" 
}' to initialize object of type 'ObservingSite': missing key 'uuid' 
2017-01-22 20:04:00.849000 Arcsecond Demo macOS[25453:8681143] [General] (
    0 CoreFoundation      0x00007fff7fa49e7b __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x00007fff94634cad objc_exception_throw + 48 
    2 Realm        0x000000010040c3f3 RLMValidatedValueForProperty + 282 
    3 Realm        0x000000010040b863 -[RLMObjectBase initWithValue:schema:] + 1105 
    4 RealmSwift       0x00000001002aa5da _TFC10RealmSwift6ObjectcfT5valueP__S0_ + 202 
    5 Arcsecond       0x000000010024fbfb _TFC9Arcsecond13ObservingSitecfT5valueP__S0_ + 203 
    6 Arcsecond       0x000000010024fc84 _TFC9Arcsecond13ObservingSiteCfT5valueP__S0_ + 52 
    7 Arcsecond       0x0000000100253a1c 

但该死的uuid关键就在这里!?我错过了什么?非常感谢您的帮助。

回答

2

我设法让它工作,没有完全理解为什么。但是变压器实际上是错误的,这不是一个Realm问题。现在,午睡变压器看起来是这样的:

self.configureTransformer("/\(self.APIVersion)/observingsites/") { 
     ($0.content as [AnyObject]).map { ObservingSite(value: $0) } 
    } 

我基本上去掉了JSON初始化。