@ Ответ JAL правильный, но, возможно, слишком конкретный.
Много АФИ получил переименован в Swift 3. Типы Большинство Foundation (NSUserDefaults
среди них) оба потеряли свой префикс NS
и имели свои методы renamed отразить Swift 3 API Guidelines. Фонд также "заменяет" * куча своих основных классов типов данных (NSURL
, NSIndexPath
, NSDate
и т.д.) с Swift родной value types (URL
, IndexPath
, Date
и т.д.). Переименование метода также применимо к любым другим API-интерфейсам Cocoa/Cocoa Touch, которые вы используете в своем приложении.
Решение этих вопросов по очереди, по строкам, является верным путем к безумию. Первое, что вы делаете при перемещении проекта в Swift 3, должно быть в выборе Edit> Convert> To Current Swift Syntax из строки меню. Это применит все изменения сразу, в том числе случаи, когда одна строка кода зависит от нескольких изменений (и, таким образом, обращение к ним по отдельности может не привести вас туда, где вы думаете, что собираетесь).
* Я помещаю «заменяет» в кавычках, потому что соответствующие классы NS
все еще существуют для случаев, когда они вам могут понадобиться, но любой API, который их использует, ссылается на новые типы значений: например. tableView(_:cellForRowAt:)
теперь принимает IndexPath
, а не NSIndexPath
.
Похоже, я собираюсь повеселиться переписываниями некоторого прошлого кода. –
@JAL - как только мы сделаем эти изменения NSUserDefault совместимыми с Swift 3/ios10/Xcode 8, текущие значения всех наших NSUserDefault сохраняются? – Joe
@Joe Да, все данные будут продолжать сохраняться. Это просто изменения имени класса и функции. – JAL