iOS 将整个核心数据数据库保存为 JSON 字符串,反之亦然

Posted

技术标签:

【中文标题】iOS 将整个核心数据数据库保存为 JSON 字符串,反之亦然【英文标题】:iOS Saving Entire Core Data DB to JSON string and vice versa 【发布时间】:2012-08-29 23:18:18 【问题描述】:

我想知道如何将 ios 应用程序上的整个核心数据库序列化为 JSON,以便我可以将其备份到云中。当用户想要恢复时,如何取回 JSON 字符串并从中生成整个核心数据库?

有可能吗?有什么建议吗?

谢谢

【问题讨论】:

【参考方案1】:

当然。您可以轻松地使用 @987654321@ 将对象序列化/反序列化到 JSON 或从 JSON 序列化/反序列化,并使用 @987654322@/@987654323@ 上传或下载 JSON。

@987654324@ 是一个流行的网络框架,内置了 JSON 序列化/反序列化。我还没有使用它,所以我不能亲自担保它,但它看起来很实用。

@987654325@ (Core Data 基础对象)有一个与之关联的 @987654326@ ,它有 - (NSDictionary *)attributesByName 方法,它应该可以轻松编写序列化/反序列化方法,而无需为每个类编写显式代码和属性。

我发现 Core Data 对我的大部分需求来说既繁重又复杂,并且通常使用 @987654327@ 协议编写本地存储和序列化/反序列化。您也可以在未来的项目中考虑这一点。

【讨论】:

【参考方案2】:

看看NSJSONSerialization Class Reference。将 JSON 放入 Core Data 肯定是可以做到的,但它需要一个自定义函数将所有数据放在适当的位置。 JSONObjectWithData 将获取一个 JSON 文件并将其放入 NSDictionary。

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://linktojson.com/file.json"]];

NSError *error = nil;

NSDictionary *results = [NSJSONSerialization
                                 JSONObjectWithData:data
                                 options:NSJSONReadingMutableLeaves
                                 error:&error];

您可以从那里将字典中的数据放入 Core Data。

反之,它可能可以完成,dataWithJSONObject 可能是最后一步,但到达那里可能会沿着重构 JSONObjectWithData 上面创建的 NSDictionary 的路线。

【讨论】:

以上是关于iOS 将整个核心数据数据库保存为 JSON 字符串,反之亦然的主要内容,如果未能解决你的问题,请参考以下文章

在核心数据iOS中保存json数据

核心数据保存日期错误

ios/objective-c:保存核心数据时出错

从核心数据创建 json 字符串,反之亦然?

ios 解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为<null>无法保存在userDefault的问题

将 JSON 保存到核心数据