使用Hyperolso Sync将多级JSON对象映射到NSManagedObject

使用Hyperolso Sync将多级JSON对象映射到NSManagedObject,json,swift,nsmanagedobject,nskeyedarchiver,Json,Swift,Nsmanagedobject,Nskeyedarchiver,我正在使用HyperOslo的伟大同步从API获取JSON对象: JSON对象: {"user": {"name" : "damien", "email" : "myemail@gmail.com", "settings" : { "notification" : "true", "secretKey" : "dzadd7z5a7dzd5azd" } } } 这是我的用户对象,是NSManagedObject的子类。将属性“设置”作为自定义对象

我正在使用HyperOslo的伟大同步从API获取JSON对象:

JSON对象:

{"user":
  {"name" : "damien",
   "email" : "myemail@gmail.com",
   "settings" : 
    { "notification" : "true",
      "secretKey" : "dzadd7z5a7dzd5azd"
    }
  }
}
这是我的用户对象,是NSManagedObject的子类。将属性“设置”作为自定义对象:

class User: NSManagedObject {
    @NSManaged var name: String?
    @NSManaged var email: String?
    @NSManaged var settings: Settings?
}
这看起来不可能!(如果有人知道其他第三方框架?)

如前所述,解决方案是使用二进制数据类型:

。。。但是如何在我的模型中构建这个属性的getter呢? (我知道下面的getter有任何意义):


框架的构建者建议我:

为什么不为新对象创建一个新的核心数据表呢

1-在核心数据中添加实体

2-为实体创建NSManagedObject子类

class Setting: NSManagedObject {
    @NSManaged var notification: Bool?
    @NSManaged var notification: String?
}
3-在用户信息中设置
hyper.remoteKey=secretKey

如果您的JSON显示“secret_key”,则Sync会将其映射到核心中的
secretKey
数据。但是如果JSON说“secretKey”,它不知道如何 将其转换为
secretKey
,因为它只执行自动 用于
snake\u案例的转换
。因此,如果您想使用
secretKey
从你的JSON你需要告诉同步这一点。你可以通过添加
hyper.remoteKey
(键)和
secretKey
作为用户信息中的值

3-在用户上创建“设置”关系(不要忘记在模型中添加属性)

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