[swift]多层次的 JSON 对象映射到 NSManagedObject 与 Hyperolso 同步

标签: json Swift
发布时间: 2017/3/5 14:58:31
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我用大同步的 HyperOslo 从 API 获取 JSON 对象︰

JSON 对象︰

{"user":
  {"name" : "damien",
   "email" : "myemail@gmail.com",
   "settings" : 
    { "notification" : "true",
      "secretKey" : "dzadd7z5a7dzd5azd"
    }
  }
}

这是我的用户对象,子类化 NSManagedObject。作为自定义 NSObject 的属性"设置":

class User: NSManagedObject {
    @NSManaged var name: String?
    @NSManaged var email: String?
    @NSManaged var settings: Settings?
}

这看起来不可能 !(如果东西知道其他第三方框架吗?)

作为医生,解决办法是使用二进制数据类型︰

enter image description here

......,但如何建立我的模型中此属性 getter 吗? (我知道下面的 getter 有任何意义上)︰

 @NSManaged var settings: Settings?{
  return [NSKeyedUnarchiver unarchiveObjectWithData:self.settings];
}

解决方法 1:

框架的生成器劝我一个好的替代解决方案

为什么不只是创建一个新的core data表为新对象?

1-在core data中添加实体

enter image description here

2-创建实体 NSManagedObject 子类

class Setting: NSManagedObject {
    @NSManaged var notification: Bool?
    @NSManaged var notification: String?
}

3-集 hyper.remoteKey = secretKey 中的用户信息。

如果你的 JSON 表示"secret_key"同步将映射到 secretKey 中的core data。但如果你的 JSON 表示"secretKey"不知道如何将之转换为 secretKey 因为它仅能自动转换为 snake_case 。所以,如果你想使用 secretKey 从你需要告诉同步这你 JSON。你做它通过添加 hyper.remoteKey (密钥) 和 secretKey 为中用户信息的值。

enter image description here

3-在用户创建的"设置"关系 (别忘了在你的模型中添加属性)

enter image description here

赞助商