从 Core Data 创建一个 json 文件

Posted

技术标签:

【中文标题】从 Core Data 创建一个 json 文件【英文标题】:Creating a json file from Core Data 【发布时间】:2016-11-29 16:13:17 【问题描述】:

我一直在尝试将核心数据中的 y 数据保存到 json 文件中。

任何人都可以提供有关执行此操作的最佳方法的提示吗?也许是一个教程。

谢谢。

编辑:我想将我的数据存储在 app 目录中的 json 文件中。所以后者我可以将它导出到 iCloud 中。我找不到太多关于创建 json 文件的信息……奇怪的是,我发现很多读取 json 文件的内容……

【问题讨论】:

您有什么问题?您的问题是关于使用 CoreData 保存实体还是特别是 JSON 文件?您可以根据需要将其保存为 (NS)Data、(NS)String,或者将其保存在驱动器中,然后只存储路径。 我编辑了我的问题问题是关于使用数据创建一个 json 文件 JSON 文件只是一个文件。您可以使用 (NS)Data 或 (NS)String 方法保存它,然后正确读取它。查看writeToFile:atomically:(来自NSData)或writeToFile:atomically:encoding:error:(来自NSString)。 好的。但可以说我的数据(coredata)中有图像、字符串和双精度数。我可以使用 writetoFile:atomically 将所有内容存储在文件 (json) 中吗? (之后我想重新加载它) 【参考方案1】:

如果文件已经保存在 CoreData 中,那么以 JSON 格式存储文件似乎会很麻烦,特别是因为如果您使用 Cloudkit,您将不会上传 JSON 格式的文件。我认为你可以通过首先为你的对象创建一个字典来完成你想要的:

let messageDic = ["message": "Hello Motto"]

然后用 JSON 序列化字典:

 do 
        let messageData = try JSONSerialization.data(withJSONObject: messageDic, options: .prettyPrinted)

     catch 
            print("error with serialization")
    

【讨论】:

【参考方案2】:

我在我的项目中使用它。此函数返回 json 字符串格式的数据,这些数据很容易保存到 coredata 中。上面的方法也是正确的,但是这种方法会生成 json 格式的字符串文件,很容易保存到 coredata 中。希望它对你有用。

 func convertAnyobjectToJSON(anyObject: AnyObject) -> JSON
        let jsonData = try! JSONSerialization.data(withJSONObject: anyObject, options: JSONSerialization.WritingOptions.prettyPrinted)
        let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)! as String
        if let dataFromString = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) 
            let json = JSON(data: dataFromString)
            return json
        
        return nil
    

【讨论】:

以上是关于从 Core Data 创建一个 json 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Core Data name.xcdatamodel 从一个文件夹移动到另一个文件夹?

使用存储的 JSON 而不是 Core Data

.Net Core系列:读取配置文件

使用 XCode 8 中 Core Data 生成的类创建对象数组

为啥 Core Data 插入需要越来越长的时间?

在 Core Data Editor 中建模 JSON 结果