User interface Swift:使用委托时更新UI组件时出错
我正在尝试更新一个进度条,使其与向CoreData加载值的进度一致。但是,每当我尝试调用progressView组件上的更新时,我都会收到一个致命错误,指出在展开可选值时意外发现nil 有趣的是,即使我在程序的委托方法中添加了'self.progressView.progress=0.5',也会发生这种情况,这表明它找不到progressView组件,而不是值的问题。使用println进行快速检查也可以确认该值确实存在,因此不是零。请注意,如果我将“self.progressView.progress=0.5”语句放在一个直接连接到按钮的函数下,它工作正常,因此从委托调用命令时一定会出现某种问题 有人知道我做错了什么吗?谢谢你的帮助 委托方法: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
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呼叫。还有,第二个“自我良好”呼叫,我已将其删除。但问题仍然存在。