TextField 作为应用程序启动时的变量粘在 LocalNotification 中

TextField as variable on app launch sticked into LocalNotification

第二次点击按钮时,我不再有任何价值了。如何在每次应用加载时加载变量。我正在谈论的变量正在发生变化,因为它始终是 textField.text! 并且是用户输入。我在用户点击 LocalNotification 操作时使用它,应用程序打开然后函数触发如下:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "someFunctionWhereIsMyProblematicVariableINeedToLoad:", name: IDENTIFIER, object: nil)

如何在每次用户输入时将变量粘贴到本地通知中。每个通知是否有所不同或只是文本更改?是否有任何 ID 可以使每个通知变得特殊?

LocalNotificationHelper.sharedInstance().scheduleNotificationWithKey("someText", title: "see options(left)", message:textField.text!+"someText", date: deadlinePicker.date, userInfo: userInfo)

我需要 textField.text 在这个变量中:let predicate = CNContact.predicateForContactsMatchingName(textField.text!)

我试图将它们存储到 NSUserDefaults 和数组中并循环遍历 arrays 以查找值是否存在等。但它只在第一次和第二次是 nil

编辑: 它只保留最后输入的值作为变量。如何保留它们?

在这里,我用图片向您展示了我试图用文字解释的内容:

现在,如果点击蓝色按钮,我会在需要使用 "firstTimeEntered" 作为变量的地方启动功能,但在第二次通知时它是 "SecondTimeEntered"

变量class范围:

var sentence:String = ""
var firstWord = [String]()
var firstWordAsString:String = ""

函数"A":

            sentence = textField.text! + " needs to be deleted from array."
            var firstWordAsString = sentence.characters.split(" ").first.map(String.init)
            firstWord.append(firstWordAsString!)
            defaults.setObject(firstWord, forKey: "firstWord")

            let userInfo = ["url" : "Hello"]

            //Set notification
            LocalNotificationHelper.sharedInstance().scheduleNotificationWithKey("someText", title: "see options(left)", message: sentence, date: deadlinePicker.date, userInfo: userInfo)

函数"B":

defaults.objectForKey("firstWord") as? String

        if contacts.contains(firstWordAsString){

        let predicate = CNContact.predicateForContactsMatchingName(firstWordAsString)

这最终是一个范围问题。

//This is the largest scope called the global scope. anything available here is available anywhere in your application.
class myclass {
    //this is the class level scope any variables here would be available from within the class but not outside of it. I can use any variables in the class scope or the global scope.
    func myFunction() {
        //this is the function scope, any variables here would be available from within the function but not outside of this function. I can use any variables in the class scope, global scope and my own scope.
    }

    func mySecondFunction() {
        //this is also the function scope, I can have my own variables but I cannot see the variables in myFunction()
    }

因此,如果您要将 var savedValues = [String]() 放在一个函数的顶部,则其他函数将无法使用它。但是如果你把它放在 class 范围内,它就可以在两个函数中使用。每次函数启动时,它都会定义函数变量,当它自己退出时,变量会从内存中删除。

要解决您的问题,请在 class 中放置一个字符串数组,然后使用该 class 级别数组的 append 方法向其中添加新内容。然后,您可以使用过滤方法或循环遍历该数组来搜索该数组。