gpt4 book ai didi

ios - 如何将快速结构保存到文件

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:36 25 4
gpt4 key购买 nike

我想为我的应用程序的(非常简单的)模型使用结构。

但是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com