ios - 从基于 Siesta 实体构建的 JSON 初始化 Realm 对象失败

标签 ios swift realm swifty-json siesta-swift

我正在使用 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 键在这里!?我缺少什么?非常感谢您的帮助。

最佳答案

我设法使它工作,但并不完全理解原因。但是transformer其实是错误的,那不是Realm的问题。现在,午睡变压器看起来像这样:

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

我基本上删除了 JSON init。

关于ios - 从基于 Siesta 实体构建的 JSON 初始化 Realm 对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41795060/

相关文章:

ios - Swift:JSON 似乎没问题,但我仍然收到 Cocoa 错误 3840

iphone - tableview 删除部分中的最后一行

swift - 在 MacOS 上检测后台 sleep 日期

swift - 当枚举符合协议(protocol) CustomStringConvertible 时,是否可以从变量中获取枚举描述?

ios - 如何保护 Realm 中的重复记录插入

iphone - 独家 iOS UTI

ios - AlamoFire 发送 Nil

swift - FRC 填充 TableView 但 FetchedResultsController 委托(delegate)方法不起作用

android - 我如何通过 Objective-C 在 Android 上使用 Realm 数据库?

android - 如何确保 Android 和 iOS 上的 Realm 架构相同?