Лучшая практика использования массива строк с NSUserDefault
У меня возникли проблемы с сохранением массива строк в 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)
}
}
Когда я запускаю это, я получаю:
фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения
на строке, где я пытаюсь вставить новый объект в массив. Я попытался следовать подходу в этой теме, но он ничего не сохранил в списке.
Я новичок в стремительности, и дополнительные типы не моя сильная сторона, может быть, кто-то знает, что не так?