我想为我的应用程序的(非常简单的)模型使用结构。
但是 NSKeyedArchiver
只接受对象(扩展 NSObjects
)。
有什么好的方法可以将结构保存到文件中吗?
最佳答案
我有时使用的一种非常简单的方法。你需要写的代码量不超过class/NSCoding场景。
首先导入伟大的SwiftyJSON图书馆。
让我们从一个简单的结构开始
struct Starship {
let name: String
let warpSpeed: Bool
let captain: String?
init(name: String, warpSpeed: Bool, captain: String? = nil) {
self.name = name
self.warpSpeed = warpSpeed
self.captain = captain
}
}
让它可以转换为 JSON 或从 JSON 转换
struct Starship {
let name: String
let warpSpeed: Bool
let captain: String?
init(name: String, warpSpeed: Bool, captain: String? = nil) {
self.name = name
self.warpSpeed = warpSpeed
self.captain = captain
}
init?(json: JSON) {
guard let
name = json["name"].string,
warpSpeed = json["warpSpeed"].bool
else { return nil }
self.name = name
self.warpSpeed = warpSpeed
self.captain = json["captain"].string
}
var asJSON: JSON {
var json: JSON = [:]
json["name"].string = name
json["warpSpeed"].bool = warpSpeed
json["captain"].string = captain
return json
}
}
就是这样。让我们使用它
let enterprise = Starship(name: "Enteriprise D", warpSpeed: true, captain: "JeanLuc Picard")
let json = enterprise.asJSON
let data = try! json.rawData()
// save data to file and reload it
let newJson = JSON(data: data)
let ship = Starship(json: newJson)
ship?.name // "Enterprise D"
关于ios - 如何将快速结构保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37756121/