【问题标题】:Email subject displays nil when using UserDefault使用 UserDefault 时电子邮件主题显示为零
【发布时间】:2017-06-02 21:50:34
【问题描述】:

我有 5 个视图控制器,您在屏幕 2 上输入您的姓名,它应该传递其数据,以便在屏幕 5(电子邮件屏幕)中,主题有您的姓名。应该像:屏幕 2:“Bill”,屏幕 5:“名称:'Bill'”,但它显示“名称:nil”。我使用 UserDefault 来传递数据, 这是我的屏幕 2 代码:

   @IBAction func extButton(_ sender: Any) {

    self.performSegue(withIdentifier: "whotoclass", sender: self)

}

func textFieldDidEndEditing(_ textField: UITextField) {

    UserDefaults.standard.setValue("your username", forKey: "UserName")
    UserDefaults.standard.synchronize()
    UserDefaults.standard.setValue(nil, forKey: "UserName")

}

屏幕 5:

let strUserName = UserDefaults.standard.value(forKey: "UserName")


var myString = String()

@IBOutlet var pickerview2: UIPickerView!
@IBOutlet var label: UILabel!

let reason = ["Busy - General","Filming","Editing","Computer Task","Helping","Getting Set Up"]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return reason[row]
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return reason.count
}

@IBAction func sendButton(_ sender: Any) {

    let toRecipients = ["thejoshytv@gmail.com"]

    let mc: MFMailComposeViewController = MFMailComposeViewController()

    mc.mailComposeDelegate = self

    mc.setToRecipients(toRecipients)
    mc.setSubject("Media Team Task")

    mc.setMessageBody("Hi There, A Notice to tell you that \(strUserName) will not be in class today.", isHTML: false)

    present(mc, animated: true, completion: nil)

}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

    controller.dismiss(animated: true, completion: nil);

    self.performSegue(withIdentifier: "reasontosent", sender: self)


}

【问题讨论】:

  • UserDefaults.standard.setValue(nil, forKey: "UserName") 你为什么要这样做?

标签: ios swift swift3


【解决方案1】:

我会从删除完全不必要的开始

UserDefaults.standard.setValue(nil, forKey: "UserName")

您基本上将值设置为 nil。

另一方面,UserDefauls 会定期保存到磁盘,因此通过将其设置为 nil 在某些时候它将被持久保存在磁盘上(之前的值将被删除)。

https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize

因为此方法会定期自动调用, 仅当您不能等待自动 同步(例如,如果您的应用程序即将退出)或 如果您想将用户默认更新为磁盘上的内容,即使 您没有进行任何更改。

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 2011-11-06
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2012-12-29
    • 2017-06-04
    相关资源
    最近更新 更多