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