PrepareForSegue,NSUserDefault和辛格爾頓
您有幾種可能的選擇將數據傳遞到其他視圖您可以根據自己想要的數據是處理,我會爲你解釋每一個,你可以選擇最適合你的需求。
,如果你想握住你的數據,1個賽格瑞過渡,我建議這個方法,這是一個很好的事業再次通過這另一種觀點之後,你需要在新的視圖中創建另一個prepareForSegue
。這裏是如何做到這一點的一個例子:
首先,你在兩個視圖中創建2個變量,1發送(currentViewController.swift
)和1接收(toViewyourGoingController.swift
)。
currentViewController.swiftvar dataToSend: AnyObject?
ViewYourGoingController.swiftvar dataToReceive: AnyObject?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//Check your segue, this way you can transfer different data to different view. also make sure the identifier match your segue.
if segue.identifier == "toViewYourGoing" {
//Initial your second view data control
let ExchangeViewData = segue.destinationViewController as! toViewyourGoingController
//Send your data with segue
ExchangeViewData.dataToReceive = dataToSend
}
}
現在,如果你想保留,只要你的數據作爲生活的這個方法是好的應用程序已安裝,一旦應用程序被刪除,這將res自動。你也可以選擇更新密鑰的值,如果你願意,這裏是你如何做NSUserDefault:
我總是喜歡註冊我的NSUserDeafult到默認設置,很多人只是繼續第二步而不註冊。
在AppDelgate中註冊NSUserDefault。迅速
NSUserDefaults.standardUserDefaults().registerDefaults(["valueName": AnyObject])
設定值您NSUserDefault,這取決於你要存儲什麼類型的數據,應該匹配一個與您的註冊,如果你沒有註冊。 (布爾數據的例子在下面鍵入)
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "valueName") //Bool Data Type
可用類型:
確保你同步,一旦你設置的值到NSUserDefault,這樣一來就會即時更新,否則會當它有機會時更新。
NSUserDefaults.standardUserDefaults().synchronize()
獲得價值:因爲我們設定布爾和註冊布爾這將收到布爾值。
let Variable: Bool! = NSUserDefaults.standardUserDefaults().boolForKey("valueName")
辛格爾頓
現在單身基本上是一個全局變量,你可以在任何視圖中使用它們,但一些開發商遇到了一些錯誤和困難,需要您自擔風險使用它,我建議這個方法當你確定你會使用這些數據很多(仍然風險),但這種方法就像數據處理女神 :)。
創建NSObject
子並調用它DataManager.swift
(我把它叫做數據管理導致它處理數據。)如下:
進口的UIKit
class DataManager: NSObject {
//Store Data Globally
static var someData: Boo! //This Boolean, you can choose whatever you want.
}
的static
是什麼讓您的數據活。
現在您可以像處理任何類型的數據那樣從任何地方存儲和接收someData
。
//Store
DataManager.someData = true
//Receive
print(DataManager.someData)
挑戰:
您還可以使用
Keychain 謝爾蓋Kargopolov將引導你如何使用第三方使用快捷鑰匙串。否則,你甚至可以採取harder challenge並自己創建一個:P。
Key-Value Data in iCloud
我想我會用NSUserDefault,但我是那種小白的迅速,在那裏我應該寫的代碼?謝謝bw – Pixele9
好的,當你想要在動作,方法或某些東西被執行後保存。全取決於你。 – Xrait
好的,謝謝!如果我想保存一個字符串,它會是「.setNilValueForKey」? – Pixele9