gpt4 book ai didi

ios - 我如何创建一个 plist,我可以在我的应用程序中很好地访问 array -> dictionary -> dictionary -> array -> mYClassInstances in swift?

转载 作者:行者123 更新时间:2023-11-29 02:06:08 28 4
gpt4 key购买 nike

我需要保存和加载 mYClassInstances 数组的字典数组的嵌套。

我应该如何存储这个对象?

最佳答案

您无法将 Swift 类直接存储在属性列表中。您可以存储有关某个类的足够信息以便稍后重建它,但我认为这不是您所要求的。如果您想在文件中存储任意对象图,Cocoa 提供了 NSKeyedArchiver/Unarchiver 类。

确保您的 MyClassInstance 类派生自 NSObject 并且支持 NSCoding 协议(protocol)。例如,

class MyClassInstances: NSObject, NSCoding, Printable {
let name: String
init(name: String) {
self.name = name
}

@objc func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "NAME")
}

@objc required init(coder decoder: NSCoder) {
self.name = decoder.decodeObjectForKey("NAME") as! String
}

override var description: String {
return "MyClassInstance.name = \(name)"
}
}

然后假设您将字典数组、字典数组、实例数组存储在名为 nest 的变量中;您可以通过此调用存储所有对象。

let temporaryDirectory = NSTemporaryDirectory()
let temporaryFile = temporaryDirectory.stringByAppendingPathComponent("SO-test.archive")
NSKeyedArchiver.archiveRootObject(nest, toFile: temporaryFile)

读回对象图使用此调用。请注意,正确进行类型转换很重要。

let nest2 = NSKeyedUnarchiver.unarchiveObjectWithFile(temporaryFile) as! [[String: [String: [MyClassInstances]]]]

这是 Playground 屏幕截图。 enter image description here

关于ios - 我如何创建一个 plist,我可以在我的应用程序中很好地访问 array -> dictionary -> dictionary -> array -> mYClassInstances in swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773806/

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