我使用来自HyperOslo的优秀Sync从API获取JSON对象:
JSON对象:
{"user":
{"name" : "damien",
"email" : "myemail@gmail.com",
"settings" :
{ "notification" : "true",
"secretKey" : "dzadd7z5a7dzd5azd"
}
}
}
这是我的User对象,子类化NSManagedObject。与财产"设置"作为自定义NSObject:
class User: NSManagedObject {
@NSManaged var name: String?
@NSManaged var email: String?
@NSManaged var settings: Settings?
}
这看起来不可能! (如果有什么东西知道其他第三方框架?)
作为the doc,解决方案是使用二进制数据类型:
...但是如何在我的模型中构建此属性的getter? (我知道下面的吸气器有任何意义):
@NSManaged var settings: Settings?{
return [NSKeyedUnarchiver unarchiveObjectWithData:self.settings];
}
答案 0 :(得分:2)
框架的构建者告诉我a good alternative solution:
为什么不为新对象创建一个新的Core Data表?
1 - 在核心数据中添加实体
2 - 为实体
创建NSManagedObject子类class Setting: NSManagedObject {
@NSManaged var notification: Bool?
@NSManaged var notification: String?
}
3 - 在用户信息中设置hyper.remoteKey = secretKey
如果你的JSON说" secret_key"同步会将其映射到Core中的
secretKey
数据。但如果你的JSON说" secretKey"它不知道如何做 将其转换为secretKey
因为它只是自动执行snake_case
的转换。所以如果你想使用secretKey
从你的JSON你需要告诉同步这个。你可以通过添加来实现hyper.remoteKey
(密钥)和secretKey
作为用户信息中的值。
3 - 创建"设置"用户关系(不要忘记在模型中添加属性)