gpt4 book ai didi

ios - Swift NSUserDefaults NSArray 使用 objectForKey

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

我是 Swift 的新手,而且我已经陷入困境。

我正在尝试从 NSUserDefaults 检索数据并将其存储在数组中(tasks):

@lazy var tasks: NSArray = {
let def = NSUserDefaults.standardUserDefaults()
let obj: AnyObject? = def.objectForKey("tasks")
return obj as NSArray
}()

我得到的只是一个警告:第 3 行的 EXE_BAD_INSTRUCTION

还要注意,我实际上还没有设置任何数据,但我的目标是如果没有数据,我希望数组为空。我将使用数据来填充 TableView 。

现在使用 var 而不是常量:

@lazy var tasks: NSArray = {
let def = NSUserDefaults.standardUserDefaults()
var obj: AnyObject? = {
return def.objectForKey("tasks")
}()
return obj as NSArray
}()

错误现在已移至返回行。

最佳答案

我认为这里的问题是您试图将 nil 转换为非可选类型并返回它。 swift 不允许这样做。解决此问题的最佳方法如下:

@lazy tasks: NSArray = {
let defaults = NSUserDefaults.standardUserDefaults()
if let array = defaults.arrayForKey("tasks") as? NSArray {
return array
}
return NSArray()
}

结合使用 Swift 的 if let 语法和 as? 运算符,您可以在一行中进行赋值和安全转换。由于您的方法不返回可选值,因此如果转换失败,您必须返回一个有效值。

关于ios - Swift NSUserDefaults NSArray 使用 objectForKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598991/

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