2015-11-04 65 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

相關問題