gpt4 book ai didi

dictionary - 在 Swift 的 NSUserDefaults 中存储 Dictionary

转载 作者:搜寻专家 更新时间:2023-11-01 05:59:30 24 4
gpt4 key购买 nike

我创建了一个 Dictionary,其中键是一个 String,值是一个名为 SectorCoordinate 的自定义对象。
我只想将整个该死的东西存储在 NSUserDefaults 中,但是当我这样做时,Xcode 说:

The type [String, SectorCoordinate] does not conform to protocol AnyObject

我真的很困惑。我认为 AnyObject 是 Objective-C 的 id 的 Swift 版本,应该能够容纳任何对象。

我已经看到并尝试实现了一系列针对 [String: String] 字典(例如 JSON 操作)的解决方案,但这些解决方案并没有奏效,并出现类似的错误。我什至试图分解键值对,当我试图存储一个 SectorCoordinate (它本身只是一个 struct 与一堆 StringInt 和其中的日期)作为 AnyObject

有没有人对如何将半复杂对象和/或其字典存储为 AnyObject 有任何建议?看起来这样应该简单很多。

最佳答案

Apple documentation关于 NSUserdefaults setObject:forKey: 方法的说明:

The value parameter can be only property list objects: NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. For NSArray and NSDictionary objects, their contents must be property list objects. See “What is a Property List?” in Property List Programming Guide.

因此,例如,您可以将 Swift Dictionary [String : NSNumber] 转换为 NSDictionary 并使用 NSUserDefaults 保存/检索它,就像这样:

let dictionary = ["myKey" : NSNumber(int: 12)] as NSDictionary
NSUserDefaults.standardUserDefaults().setObject(dictionary, forKey: "myDict") //[myKey : 12]
NSUserDefaults.standardUserDefaults().dictionaryForKey("myDict") //{[myKey : 12]}

但这对于 [String : SectorCoordinate] 类型的 Swift 字典是不可能的,其中 SectorCoordinate 是一个 Swift 结构。

关于dictionary - 在 Swift 的 NSUserDefaults 中存储 Dictionary<String, CustomObject>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25463663/

24 4 0