2017-01-21 2 views
1

Поэтому я использую:UserDefaults стремительного как проверка массива, если значение существует

var defaults = UserDefaults.standard 
.... 
seenPosts.insert(CellsData[indexPath.row]["id"] as! Int, at: 0) 

Так что я в основном с помощью UserDefaults установить массив с идентификаторами, теперь я хочу, чтобы проверить, что массив имеет значение

if (self.defaults.data(forKey: "seen_posts").contains(5){ 
    //do action 
} 

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

ответ

1

Использование array(forKey. data(forKey для (NS)Data объектов.

Вы можете проверить nil и, если массив содержит значения в одном выражении:

let defaults = UserDefaults.standard 
if let seenPosts = defaults.array(forKey: "seen_posts") as? [Int], !seenPosts.contains(5) { 
    seenPosts.insert(CellsData[indexPath.row]["id"] as! Int, at: 0) 

} 
+0

Спасибо еще раз, по-прежнему не работает, у меня есть скриншот здесь https://screencast.com/t/VEZNNpLGkTP и выход ошибки. Не удалось передать значение типа «NSTaggedPointerString» (0x102bf8d10) в «NSNumber» (0x102200488). – Uffo

+0

Это не моя вина. Выполняется код выше. У вас есть два вопроса. 1) Кажется, что значение для ключа 'id' является строкой. 2), чтобы лить буквальной строки 'как! Строка? "Безумна. Не производите литые строки ни к чему. – vadian

+0

Да, вы правы, спасибо вам снова и снова! – Uffo

Смежные вопросы