NSUserDefaults
NSUserDefaults的使用不再似乎是一類在iOS的10 SDK:在Xcode 8和iOS 10
let defaults = NSUserDefaults.standardUserDefaults()
這無法編譯。這個班級被刪除了嗎?
(這是一個典型Q &一對,以防止重複的問題洪水)
NSUserDefaults
NSUserDefaults的使用不再似乎是一類在iOS的10 SDK:在Xcode 8和iOS 10
let defaults = NSUserDefaults.standardUserDefaults()
這無法編譯。這個班級被刪除了嗎?
(這是一個典型Q &一對,以防止重複的問題洪水)
NSUserDefaults
已更名爲UserDefaults
。 standardUserDefaults()
已更名爲standard()
。
let defaults = UserDefaults.standard
現在可以工作。
@日航的答案是正確的,但也許太具體。
很多API的斯威夫特得到了更名3.最基礎的類型(其中NSUserDefaults
)雙雙失去了NS
前綴和有自己的方法renamed反映Swift 3 API Guidelines。基金會還 「取代」 *一幫其基本數據類型類(NSURL
,NSIndexPath
,NSDate
等)與雨燕本地value types(URL
,IndexPath
,Date
等)。重命名方法也適用於您在應用中使用的任何其他Cocoa/Cocoa Touch API。
一行一行處理這些問題是一種瘋狂的肯定方式。 將項目移動到Swift 3時要做的第一件事情應該是從菜單欄中選擇編輯>轉換>轉換爲當前快捷語法。這將同時應用所有更改,包括一行代碼受多個更改影響的情況(因此單獨解決這些更改可能無法將您帶到您想要的地方)。
*我將「替換」放在引號中,因爲相應的NS
類仍然存在於您可能需要它們的情況下,但是任何使用它們的API都會引用新的值類型。 tableView(_:cellForRowAt:)
現在需要IndexPath
,而不是NSIndexPath
。
感謝rickster。有一個關於iOS 10中的類重命名的元問題[here](http://meta.stackoverflow.com/q/326078/2415822)。 – JAL
更精確,斯威夫特-3使用UserDefaults: -
//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)
不需要在'UserDefaults'之前寫'Foundation.' –
看起來像我要去有一些有趣的重寫過去的一些代碼。 –
@JAL - 一旦我們使這些NSUserDefault更改符合Swift 3/ios10/Xcode 8,我們所有NSUserDefaults的當前值是否會持續? – Joe
@Joe是的,所有的數據將會持續存在。這些只是類和函數名稱的變化。 – JAL