Swift将信息存储在常量中并保持不变

Swift将信息存储在常量中并保持不变,swift,Swift,您好,我目前正在做一个项目,用户在文本字段中键入一些内容,然后按下一个按钮,用户在文本字段中键入的任何内容都将显示为通知的alertbody的一部分。 为此,我将textfield.text保存为变量,然后使用字符串插值将其包含到alertbody中。 问题是我发出通知的时间每周都在变化,所以我必须发出新的通知。我仍然想使用用户在文本字段中键入的任何内容。但是由于textfield.text保存在函数中,我认为它不会存储在函数之外。 到目前为止,我的代码就是这样的 override func v

您好,我目前正在做一个项目,用户在文本字段中键入一些内容,然后按下一个按钮,用户在文本字段中键入的任何内容都将显示为通知的alertbody的一部分。 为此,我将textfield.text保存为变量,然后使用字符串插值将其包含到alertbody中。 问题是我发出通知的时间每周都在变化,所以我必须发出新的通知。我仍然想使用用户在文本字段中键入的任何内容。但是由于textfield.text保存在函数中,我认为它不会存储在函数之外。 到目前为止,我的代码就是这样的

override func viewDidLoad() {
 super.viewDidLoad()
 timer = NSTimer.scheduledTimerWithTimeInterval(604800, target: self,selector:Selector("repeater"), userInfo: nil, repeats: true)
 }

savedtext:String!    

@IBAction func setNotification{
textfield.text = savedtext
 //set notifications and other stuff here
}
//outside the function savedtext should not have the textfield's info
func repeater{
//setting notification
}
对不起,如果我的问题有点难理解
非常感谢任何帮助

我会在这里使用
NSUserDefaults
,它会将您的数据保存在键值映射中,即使在用户或系统关闭应用程序之后。代码如下所示

let ALERT_MESSAGE_KEY : String = "myAlertMsgKey"

@IBAction func setNotification{
   let defaults = NSUserDefaults.standardUserDefaults()
   defaults.setValue(textfield.text , forKey: ALERT_MESSAGE_KEY) 
   NSUserDefaults.standardUserDefaults().synchronize()
  //set notifications and other stuff here
}
在中继器功能中:

func repeater {
   let defaults = NSUserDefaults.standardUserDefaults()
   let alertMessage = defaults.valueForKey(ALERT_MESSAGE_KEY) as? String ?? "No message saved"
}

你也可以使用核心数据来实现这一点,但对于如此简单的东西来说,这将是一种过度杀伤力,我会在这里使用
NSUserDefaults
,它将把你的数据保存在键值图中,即使在用户或系统杀死应用程序之后。代码如下所示

let ALERT_MESSAGE_KEY : String = "myAlertMsgKey"

@IBAction func setNotification{
   let defaults = NSUserDefaults.standardUserDefaults()
   defaults.setValue(textfield.text , forKey: ALERT_MESSAGE_KEY) 
   NSUserDefaults.standardUserDefaults().synchronize()
  //set notifications and other stuff here
}
在中继器功能中:

func repeater {
   let defaults = NSUserDefaults.standardUserDefaults()
   let alertMessage = defaults.valueForKey(ALERT_MESSAGE_KEY) as? String ?? "No message saved"
}

您也可以使用核心数据,但对于如此简单的东西来说,这是一种过分的做法

非常感谢,您的回答帮助alotIs找到了为存储在
NSUserDefaults
中的东西设置默认值的方法,用户可以更改它,之后它将不会恢复为默认值?或者我应该使用plist吗?非常感谢,您的回答帮助alotIs找到了为存储在
NSUserDefaults
中的内容设置默认值的方法,用户可以更改该值,之后它将不会恢复为默认值?或者我应该用plist吗?