Лучшая практика использования массива строк с 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)
    }
}

Когда я запускаю это, я получаю:

фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения

на строке, где я пытаюсь вставить новый объект в массив. Я попытался следовать подходу в этой теме, но он ничего не сохранил в списке.

Я новичок в стремительности, и дополнительные типы не моя сильная сторона, может быть, кто-то знает, что не так?

Ответы на вопрос(2)

Ваш ответ на вопрос