@ Odpowiedź JAL jest poprawna, ale może zbyt szczegółowa.
Dużo API został przemianowany w Swift 3. typy Najbardziej Foundation (NSUserDefaults
wśród nich) mają obie straciły NS
prefiks i miał swoje metody renamed odzwierciedlać Swift 3 API Guidelines. Fundacja również "zastępuje" * grono swoich klas podstawowych typów danych (NSURL
, NSIndexPath
, NSDate
, etc) z Swift-rodzimy value types (URL
, IndexPath
, Date
, etc). Zmiana nazwy metody ma również zastosowanie do wszystkich innych interfejsów API Cocoa/Cocoa Touch używanych w Twojej aplikacji.
Radzenie sobie z tymi problemami jeden po drugim, linia po linii, jest pewnym sposobem na szaleństwo. Pierwszą rzeczą, którą należy zrobić po przeniesieniu projektu do Swift 3, powinno być wybranie z paska menu opcji Edycja> Konwertuj> Do bieżącej składni Swift. Spowoduje to zastosowanie wszystkich zmian naraz, w tym przypadków, w których na jedną linię kodu ma wpływ wiele zmian (a tym samym indywidualne ich adresowanie może nie doprowadzić Cię do miejsca, w którym myślisz, że jedziesz).
* kładę „zastępuje” w cudzysłowie, ponieważ odpowiednie NS
zajęcia są nadal wokół przypadków, gdzie można ich potrzebują, ale każdy interfejs API, który je wykorzystuje odnosi się do nowych typów wartości zamiast: na przykład tableView(_:cellForRowAt:)
zajmuje teraz IndexPath
, a nie NSIndexPath
.
Wygląda jak będę mieć trochę zabawy przepisywanie jakąś przeszłość kod. –
@JAL - kiedy dokonamy tych zmian NSUserDefault zgodnie ze Swift 3/ios10/Xcode 8, czy będą aktualne bieżące wartości wszystkich naszych NSUserDefaults? – Joe
@Joe Tak, wszystkie dane będą nadal występować. Są to tylko zmiany nazw klas i funkcji. – JAL