【发布时间】:2016-06-17 05:10:56
【问题描述】:
在我的 iOS 项目中,我需要将整个 JSON 保存为用户数据,然后在下一次应用启动时重新加载它。
将其压缩成许多值然后重新创建 JSON 不是一种选择,我只需要一些可序列化的方式来保存整个原始 JSON。
我尝试通过执行json.rawString() 将其转换为String 并通过将获得的string 传递给JSON(string) 来重新创建它,但它不起作用。
我对制作如此简单的东西的难度以及网上缺乏关于此类东西的信息感到惊讶,所以我迫不及待地想知道如何做到这一点:)
例子:
public func saveJSON(j: JSON) {
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setValue(j.rawString()!, forKey: "json")
// here I save my JSON as a string
}
public func loadJSON() -> JSON {
let defaults = NSUserDefaults.standardUserDefaults()
return JSON(defaults.valueForKey("json") as! String))
// here the returned value doesn't contain a valid JSON
}
【问题讨论】:
-
您确定要将其保存到 NSUserDefaults 吗?最好将 JSON 反序列化为数组或字典,然后将其保存到文档目录中的 plist 并在应用启动时加载。
-
问题是数据可能会发生变化,反正就是一个很小的JSON,所以对我来说没问题。
-
saveJSON 对你有用吗?
-
是的,它奏效了。但是 Swift 现在可能已经改变了,如果它不再起作用,我没有尝试。有什么问题吗?
标签: ios json swift nsuserdefaults swifty-json