iOS代表返回nil(Swift)

时间:2015-08-31 22:37:37

标签: ios swift delegates

我觉得这个代码存在多个问题,但我的第一个问题是我的代理返回nil而我不知道为什么。首先,是我的代表:

import UIKit

//delegate to move information to next screen
protocol userEnteredDataDelegate {
func userDidEnterInformation(info:NSArray)
}

接下来,我为委托定义了一个var,我相信?使它成为可选变量?这是在类

中定义的
var dataPassDelegate:userEnteredDataDelegate? = nil

现在,在我的用户在视图中的字段中输入信息之后,我想将这些字段值添加到数组中,然后将该数组传递到将添加到的下一个视图。我已经从一些YouTube示例拼凑了这些代码,但我想我错过了一个必要的部分。我何时为dataPassDelegate var指定某种值,以便在if语句出现时不是nil?我甚至需要if语句吗?

        if blankData != 1 {
        //add code to pass data to next veiw controller
        enteredDataArray = [enterDate.text, enterSeason.text, enterSport.text, enterDispTo.text]
        //println(enteredDataArray)
        self.appIsWorking ()
        if (dataPassDelegate != nil) {
            let information: NSArray = enteredDataArray
            println(information)
            dataPassDelegate!.userDidEnterInformation(information)
            self.navigationController?.popViewControllerAnimated(true)
        } else {
            println ("dataPassDelegate = nil")
        }

        //performSegueWithIdentifier("goToDispenseScreenTwo", sender: self)
        activityIndicator.stopAnimating()
        UIApplication.sharedApplication().endIgnoringInteractionEvents()
    }
    blankData = 0
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

委托是指向符合特定协议的另一个对象的指针。通常,您使用委托来优化类的行为,或者将异步网络请求的结果发回状态信息

当您设置dataPassDelegate代表由您决定时。

具有dataPassDelegate属性的对象是什么?什么对象将作为代表?

您需要创建2个对象(将作为委托的对象和具有dataPassDelegate属性的对象)并将它们链接起来。

我们无法告诉您何时这样做,因为我们不知道您尝试做什么或将使用这些对象。