【发布时间】:2015-08-12 13:44:00
【问题描述】:
我在将字符串数组保存到 userDefaults 时遇到了一些问题。我在一个类中声明了一个字符串数组,并带有一个属性观察器来同步到 userDefaults。此外,我希望将数组限制为最多 5 个字符串。
let userDefaults = NSUserDefaults.standardUserDefaults()
var suggestions: [String]! {
didSet {
var arrayEnd = suggestions.count
if arrayEnd >= 5 {
arrayEnd = 4
}
let newArray = Array(suggestions[0...arrayEnd])
userDefaults.setObject(newArray, forKey: "suggestions")
userDefaults.synchronize()
}
}
func getSuggestionData() {
if userDefaults.valueForKey("suggestions") != nil {
self.suggestions = userDefaults.valueForKey("suggestions") as? [String]
}
}
override func viewDidLoad() {
super.viewDidLoad()
getSuggestionData()
suggestions.insert("someString", atIndex: 0)
}
}
当我运行它时,我得到:
致命错误:在展开可选值时意外发现 nil
在我尝试向数组中插入新对象的那一行。 我已尝试按照此线程中的方法进行操作,但它没有将任何内容保存到列表中。
我是 swift 新手,可选类型不是我的强项,也许有人知道出了什么问题?
【问题讨论】:
-
Optionals 是 Swift 语言的一个基本原则,我想你可以对read up on how they work 做。另外,这个问题在 Stack Overflow 上被问过很多次,例如:stackoverflow.com/q/24643522/429427。 (提示:当您在上面调用
insert(_:atIndex:)时,suggestions看起来就像nil)
标签: arrays swift nsuserdefaults optional