繁体   English   中英

使用dispatch_async()时Swift中的Optionals问题

[英]Issue with Optionals in Swift when using dispatch_async()

嘿伙计们,我对Swift非常缺乏经验,所以我确信这个问题来自于我对语法的天真。 一般情况下,我试图从Parse检索数据并将结果读入NSArray 但是,我收到以下错误:

致命错误:在展开Optional值时意外发现nil

我已将其缩小到函数失败的代码中的此部分。 我在self.userData = res行之后得到错误。 我确信我正在解释所述的零值,但不知道如何解决它。 如果我做了像var res = query!.findObjects()?这样的事情var res = query!.findObjects()? 使findObjects可选,然后我得到编译器错误。 只是有点卡住,任何事情都有帮助。

func getUserInfo() {
    let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
    dispatch_async(dispatch_get_global_queue(priority, 0)) {
        let user = PFUser.currentUser()
        var query = PFUser.query()
        query!.whereKey("username", equalTo: self.username)
        var res = query!.findObjects()!
        dispatch_async(dispatch_get_main_queue()) {
            self.userData = res
            self.tableView.reloadData()
        }
    }
}

它更可能是这些行之一:

    query!.whereKey("username", equalTo: self.username)
    var res = query!.findObjects()!

这些是解开Optional值的行。

试试这个:

if let unwrappedQuery = query {
    unwrappedQuery.whereKey("username", equalTo: self.username)
    if let result = query.findObjects() {
        dispatch_async(dispatch_get_main_queue()) {
            self.userData = result
            self.tableView.reloadData()
        }
    } else {
        println("query.findObjects returned nil")
    }
} else {
    println("query was nil")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM