应用关闭后如何保存结构?

时间:2019-11-09 20:50:14

标签: ios swift struct

我知道关闭应用程序后,有很多方法可以保存数据-NSCoding,CoreData和NSKeyedArchiver仅举几例-但它们都不支持存储自定义结构(对吗?)我可以存储任何方法吗?这样的结构进入内存?我想存储items变量(如果需要,还可以存储myStruct)。

struct myStruct {
    var text: String
    var isDone: Bool
}

var items = [Int: [myStruct]]()

任何帮助一如既往!再次感谢!

2 个答案:

答案 0 :(得分:-1)

据我所知,

CoreData实际上确实支持自定义结构。唯一的限制是,这些结构中允许的唯一数据类型是原始的NSData。但是,这很容易克服,因为很容易将您的任何自定义对象编码为NSData对象。

答案 1 :(得分:-1)

使用可编码进行归档

您可以使用Codable协议和NSKeyedArchiver来执行此操作。

使您的struct符合Codable协议。如果所有struct的属性也都符合Codable,则无需做任何额外的操作,对于IntDouble,String {{ 1}} struct and others. Even nested枚举如果它们自己的属性属于这些基本类型,则将是可编码的。

请注意,如果您使用的其他自定义类型不是从符合s and的类中继承的,则需要为该类型添加自己的编码键,以便可以通过这种方式对其进行归档。

只需将协议添加到声明中:

Codable

然后您可以保存以下项目:

struct myStruct: Codable {
    var text: String
    var isDone: Bool
}

var items = [Int: [myStruct]]()

do { let myData: Data = try NSKeyedArchiver.archivedData(withRootObject: items, requiringSecureCoding: false) try myData.write(to: fileURL) } catch { // Error handling } 应该是文件系统中某个位置的URL。

您可以这样加载项目:

fileURL