2017-01-22 1 views
1

Я использую Siesta для извлечения ресурсов с моего сервера. И я следую руководству пользователя, чтобы настроить трансформатор для автоматического преобразования строк JSON в объекты Realm.Инициализация объектов Realm из JSON, построенного на Siesta Entity, не работает

Он работает для отдельных объектов, но почему-то не работает с массивами таких объектов.

Вот моя урезанная модель:

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) } 
    } 

JSON быть тип данных определяется SwiftyJSON.

И сообщение с ума Я получаю ошибку:

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

Мне удалось заставить его работать, не зная почему. Но трансформатор на самом деле ошибочен, и это не проблема в Царстве. Теперь трансформатор Siesta выглядит следующим образом:

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

Я в основном удалены JSON инициализации.

Смежные вопросы