2015-11-04 67 views
0

我在两个视图中连接到菜单,在一个视图中,我有一个文本框来输入您的电子邮件,我想采用该文本框文本(即电子邮件地址)到另一个视图,但我认为我需要将这些数据保存到手机中,以便在用户再次启动应用程序时,他/她不必再次输入该地址,然后使用该地址另一个视图中的电子邮件地址将向该地址发送电子邮件。下面是我的代码:保存从文本框中输入的文本以便在其他文件中使用[Swift]

let configCorreo = ConfigurarCorreo() 
let mail = configCorreo.textField.text! 

然后,我使用的邮件在其他的viewController键入的用户设置收件人:

let mc: MFMailComposeViewController = MFMailComposeViewController() 
mc.mailComposeDelegate = self 
mc.setToRecipients(["\(mail)"]) 

,但我得到一个错误说:“致命错误:在解包可选值时意外地发现为零“

回答

2

PrepareForSegue,NSUserDefault和辛格尔顿

您有几种可能的选择将数据传递到其他视图您可以根据自己想要的数据是处理,我会为你解释每一个,你可以选择最适合你的需求。


prepareForSegue: Method

,如果你想握住你的数据,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 
    } 
} 

NSUserDefault

现在,如果你想保留,只要你的数据作为生活的这个方法是好的应用程序已安装,一旦应用程序被删除,这将res自动。你也可以选择更新密钥的值,如果你愿意,这里是你如何做NSUserDefault:

我总是喜欢注册我的NSUserDeafult到默认设置,很多人只是继续第二步而不注册。

在AppDelgate中注册NSUserDefault。迅速

NSUserDefaults.standardUserDefaults().registerDefaults(["valueName": AnyObject]) 

设定值您NSUserDefault,这取决于你要存储什么类型的数据,应该匹配一个与您的注册,如果你没有注册。 (布尔数据的例子在下面键入)

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "valueName") //Bool Data Type 

可用类型:

enter image description here

确保你同步,一旦你设置的值到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

+0

我想我会用NSUserDefault,但我是那种小白的迅速,在那里我应该写的代码?谢谢bw – Pixele9

+0

好的,当你想要在动作,方法或某些东西被执行后保存。全取决于你。 – Xrait

+0

好的,谢谢!如果我想保存一个字符串,它会是“.setNilValueForKey”? – Pixele9

相关问题