Ios 在Swift 3.0中存档和取消存档
我在swift 3.0中的存档和取消存档数据方面遇到一些问题 我读了一些关于同样情况的帖子,但对一些案例仍然不完全清楚Ios 在Swift 3.0中存档和取消存档,ios,struct,enums,swift3,nsarchiving,Ios,Struct,Enums,Swift3,Nsarchiving,我在swift 3.0中的存档和取消存档数据方面遇到一些问题 我读了一些关于同样情况的帖子,但对一些案例仍然不完全清楚 enum(我使用rawValue将其存档。) struct(我读到了将其归档的扩展方法)。还有别的办法吗 数组 由于数组也是一个结构,因此它还必须遵循与结构相同的归档约定。但是我能够直接归档基本数据类型的数组,例如字符串、Int等。i、 e 让arr=[“1”,“2”]直接存档,无需任何扩展名 另外,它如何在自定义对象的数组中工作 Set 字典 我也遇到同样的问题,并为我的结构
enum
(我使用rawValue
将其存档。)struct
(我读到了将其归档的扩展方法)。还有别的办法吗
数组
数组
也是一个结构
,因此它还必须遵循与结构
相同的归档约定。但是我能够直接归档基本数据类型的数组
,例如字符串、Int
等。i、 e
让arr=[“1”,“2”]
直接存档,无需任何扩展名
另外,它如何在自定义对象的数组中工作
Set
字典
我也遇到同样的问题,并为我的结构找到了此解决方案:
struct Series {
var name: String?
var season: String?
var episode: String?
init(name: String?, season: String?, episode: String?) {
self.name = name
self.season = season
self.episode = episode
}
static func archive(w: Series) -> Data {
var fw = w
return Data(bytes: &fw, count: MemoryLayout<Series>.stride)
}
static func unarchive(d: Data) -> Series {
guard d.count == MemoryLayout<Series>.stride else {
fatalError("Error!")
}
var w: Series?
d.withUnsafeBytes({(bytes: UnsafePointer<Series>) -> Void in
w = UnsafePointer<Series>(bytes).pointee
})
return w!
}
而未归档者是这样的:
var series = [Series]()
let arcData = Series.archive(w: series[0])
var seriesItems = [Data]()
let unarcData = [Series.unarchive(d: seriesItems[0])]
但当我输入带有空格的名称时,应用程序崩溃。我不知道为什么,因为在第四季和第集的情况下,也有类似于“第1季”的空间