gpt4 book ai didi

Swift - 将字典保存到 NSUserDefaults 时 macOS 程序卡住

转载 作者:可可西里 更新时间:2023-11-01 01:31:06 24 4
gpt4 key购买 nike

我一直在尝试将类型为 [Int:String] 的字典保存到 NSUserDefaults 中,它过去工作得很好,但最近就不行了。当调用保存方法时,macOS 程序卡住(使用 rainbow 加载程序)并且永远不会恢复。

因为我之前能够做到这一点,我怀疑这可能与 NSUserDefaults 在我的 mac 上的存储位置有关(我不知道它在哪里)。

这是我的代码:

    let defaults = NSUserDefaults.standardUserDefaults()
var dict: [Int: String] = [:]
dict[1] = "123512"
dict[2] = "1231232"
dict[3] = "112512"
dict[4] = "1212081"
print(dict)
defaults.setObject(dict, forKey: "cameraOrder")

目前,objectForKey: "cameraOrder"是空的,这是我通过在终端上调用 "defaults delete [Bundle ID]"来完成的。

预先感谢您的帮助。

附加信息

我认为这个问题可能与保存字典类型有关。如果我运行这段代码:

    defaults.setObject("12", forKey: "cameraOrder")
print(defaults.objectForKey("cameraOrder"))

它完美地工作。

令人惊讶的是,即使我保存了 [String:String] 类型的字典,它也能正常工作(将键 1 更改为“1”)

最佳答案

尝试从 NSUserDefaults 中正确获取字典。

let userDefaults = NSUserDefaults.standardUserDefaults()

if let dictionaryForUserDefaults = userDefaults.dictionaryForKey("cameraOrder") as? [Int: String] {

}

今天我调查这个问题。尝试使用真正的 Xcode 进行测试,而不是使用 playground。

当您运行时,您将收到 Xcode 中的代码。

Attempt to set a non-property-list object { 2 = 123512; 3 = 123512; 1 = 123512; 4 = 123512; } as an NSUserDefaults/CFPreferences value for key cameraOrder

可以断定 Dictionary 不是非属性列表对象。让我们仔细阅读苹果文档:

And although NSDictionary and CFDictionary objects allow their keys to be objects of any type, if the keys are not string objects, the collections are not property-list objects.

所以你的情况下的键是 Int 并且有问题。

为了解决问题尝试:

let defaults = NSUserDefaults.standardUserDefaults()

let key = "cameraOrder"

var dict: [String: String] = [:]
dict["1"] = "123512"
dict["2"] = "1231232"
dict["3"] = "112512"
dict["4"] = "1212081"

print(dict)

defaults.setObject(dict, forKey: key)

关于Swift - 将字典保存到 NSUserDefaults 时 macOS 程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39373884/

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