从 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 从一个文件夹移动到另一个文件夹?