【问题标题】:Map a multi-level JSON object to NSManagedObject with Hyperolso Sync使用 Hyperolso Sync 将多级 JSON 对象映射到 NSManagedObject
【发布时间】:2015-10-30 16:42:13
【问题描述】:

我正在使用来自 HyperOslo 的出色 Sync 从 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?
}

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

作为the doc,解决方案是使用二进制数据类型:

...但是如何在我的模型中构建此属性的吸气剂? (我知道下面的吸气剂有任何意义):

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

【问题讨论】:

    标签: json swift nsmanagedobject nskeyedarchiver


    【解决方案1】:

    框架的构建者建议我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”,同步会将其映射到核心中的 secretKey 数据。但是如果你的 JSON 说“secretKey”它不知道如何 将其转换为secretKey,因为它只会自动执行 snake_case 的转换。所以如果你想使用secretKey 从您的 JSON 中,您需要告诉 Sync 这个。你通过添加来做到这一点 hyper.remoteKey(键)和secretKey作为用户信息中的值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-27
      • 2018-05-16
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 2018-02-10
      • 2014-11-07
      • 1970-01-01
      相关资源
      最近更新 更多