Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface Swift:使用委托时更新UI组件时出错_User Interface_Swift_Delegation - Fatal编程技术网

User interface Swift:使用委托时更新UI组件时出错

User interface Swift:使用委托时更新UI组件时出错,user-interface,swift,delegation,User Interface,Swift,Delegation,我正在尝试更新一个进度条,使其与向CoreData加载值的进度一致。但是,每当我尝试调用progressView组件上的更新时,我都会收到一个致命错误,指出在展开可选值时意外发现nil 有趣的是,即使我在程序的委托方法中添加了'self.progressView.progress=0.5',也会发生这种情况,这表明它找不到progressView组件,而不是值的问题。使用println进行快速检查也可以确认该值确实存在,因此不是零。请注意,如果我将“self.progressView.progr

我正在尝试更新一个进度条,使其与向CoreData加载值的进度一致。但是,每当我尝试调用progressView组件上的更新时,我都会收到一个致命错误,指出在展开可选值时意外发现nil

有趣的是,即使我在程序的委托方法中添加了'self.progressView.progress=0.5',也会发生这种情况,这表明它找不到progressView组件,而不是值的问题。使用println进行快速检查也可以确认该值确实存在,因此不是零。请注意,如果我将“self.progressView.progress=0.5”语句放在一个直接连接到按钮的函数下,它工作正常,因此从委托调用命令时一定会出现某种问题

有人知道我做错了什么吗?谢谢你的帮助

委托方法:

class ViewControllerUpdate: UIViewController, NSURLSessionDelegate, NSURLSessionDownloadDelegate, saveUpdate {

[....]

func updateStatus(status: String, progress: Float?) {
    if let percentProgress = progress? {
        self.progressView.progress = 0.5
    }
    //println(progress) - NOTE THIS IS CORRECTLY POPULATED WITH THE APPROPRIATE VALUE
}
主叫班级:

protocol saveUpdate {
    func updateStatus(status:String, progress:Float?)
}
类sqlPullSave{

let classtoUpdate: saveUpdate = ViewControllerUpdate()

func saveTSVtoSQL(fromFile: NSURL) -> Int {

    //Load up the information into a Dictionary (tsv)
    //let tsvURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(fromFileName, ofType: fromFileExtension)!)
    let tsvURL: NSURL = fromFile
    let tab = NSCharacterSet(charactersInString: "\t")
    let tsv = CSV(contentsOfURL: tsvURL, separator: tab)
    //let defResult: AnyObject = tsv.rows[0]["Name"]!

    //let tryagain:String = AnyObjecttoString(tsv.rows[1]["Name"]!)
    //load the data into the SQLite database...
    dispatch_async(dispatch_get_main_queue()) {
    for a in 0..<tsv.rows.count {
        self.SQLsaveLine(self.AnyObjecttoString(tsv.rows[a]["Name"]!),
            name_l: "",
            desc: self.AnyObjecttoString(tsv.rows[a]["1"]!),
            jobTitle: self.AnyObjecttoString(tsv.rows[a]["2"]!),
            extn: self.AnyObjecttoString(tsv.rows[a]["3"]!)
        // update status
        var percentComplete: Float = (Float(a) / Float(tsv.rows.count))
        self.classtoUpdate.self.updateStatus("SQLload", progress: percentComplete)
        }
    }
    return 0
}

self.classtoUpdate.self.updateStatus…second self的用途是什么?您的进度视图是IBOutlet吗?如果是,您是否记得在故事板中连接它?您好-是的,它连接正确。如果我在表单中添加另一个按钮并将其直接链接到同一语句,则progressView会正确更新,因此它一定是d的问题elegate呼叫。还有,第二个“自我良好”呼叫,我已将其删除。但问题仍然存在。