Подтвердить что ты не робот

Использование NSUserDefaults с Xcode 8 и iOS 10

NSUserDefaults больше не является классом в iOS 10 SDK:

let defaults = NSUserDefaults.standardUserDefaults()

Это не скомпилируется. Удалился ли этот класс?

(Это каноническая пара Q & A, чтобы предотвратить поток повторяющихся вопросов)

4b9b3361

Ответ 2

Точнее использовать UserDefaults в Swift-3: -

       //To save the string 
       let userDefaults = UserDefaults.standard
       userDefaults.set( "String", forKey: "Key")

       //To retrieve from the key
       let userDefaults = UserDefaults.standard
       let value  = userDefaults.string(forKey: "Key")
       print(value)

Ответ 3

@JAL ответ правильный, но, возможно, слишком конкретный.

Множество API было переименовано в Swift 3. Большинство типов Foundation (NSUserDefaults среди них) потеряли префикс NS и имели свои методы переименовали в отразить Руководство по API Swift 3. Фонд также "заменяет" * набор основных классов типов данных (NSURL, NSIndexPath, NSDate и т.д.) С Swift-native значениями типов ( URL, IndexPath, Date и т.д.). Переименование метода также применимо к любым другим Cocoa/Cocoa Touch API, которые вы используете в своем приложении.

Решение этих проблем по очереди, по очереди, является верным способом безумия. Первое, что вы делаете при перемещении проекта в Swift 3, - это выбрать Edit > Convert > To Current Swift Syntax из строки меню. Это применит все изменения сразу, в том числе случаи, когда одна строка кода зависит от нескольких изменений (и, следовательно, их индивидуальное обращение может не привести вас туда, где вы думаете, что собираетесь).

* Я помещаю "заменяет" в кавычках, потому что соответствующие классы NS все еще существуют для случаев, когда они вам нужны, но любой API, который их использует, ссылается на новые типы значений: например. tableView(_:cellForRowAt:) теперь принимает IndexPath, а не NSIndexPath.