【问题标题】:iOS and Parse throwing exception: "unexpectedly found nil"iOS 和 Parse 抛出异常:“意外发现 nil”
【发布时间】:2015-08-14 21:56:24
【问题描述】:

我在 Xcode 6.4 上做一些 iOS 应用程序,我使用 Parse 作为后端,在我尝试将 Parse 获取的消息从对象添加到凝视数组之前一切都很好。

错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

问题是我不知道它在说什么 nil,因为我已经解开了所有值,或者至少我认为是这样,帮助??

代码:

var mensajes:[String]!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    println("\(PFUser.currentUser()!.username!)")
    menuLabel.text =  "Bienvenido \(PFUser.currentUser()!.username!)"
    /*
    var query = PFQuery(className: "Alumnos")

    query.whereKey("nombre", hasSuffix: "1")

    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in
        if error == nil {
            println("No error")
            println("we have \(objects!.count)")

            if let object = objects as? [PFObject] {
                for obj in object {
                    println("\(obj.objectId) ----")
                    println(obj)
                    println(obj["nombre"] as! String + "*****")
                }
            }
        } else {

            println("a misterious error has appeared \(error!) \(error!.description)")
        }

    } */

    var avisosQuery = PFQuery(className: "Alumnos")

    if let papa = PFUser.currentUser() {
        avisosQuery.whereKey("userId", equalTo: papa)

        avisosQuery.findObjectsInBackgroundWithBlock {
            (alumnos: [AnyObject]?, error: NSError?) -> Void in

            if error == nil {

                println("No Error we have \(alumnos?.count) students")

                var grupos: PFObject? = nil

                if let obj = alumnos as? [PFObject] {
                    for alum in obj {
                        println(alum["nombre"])
                        //println(alum["grupoId"])
                        //println(alum)
                        grupos = alum["grupoId"] as? PFObject
                        println(grupos!)


                        var secondQuery = PFQuery(className: "Avisos")

                        secondQuery.whereKey("grupoId", equalTo: grupos!)

                        secondQuery.findObjectsInBackgroundWithBlock {
                            (avisos: [AnyObject]?, error: NSError?) -> Void in

                            if error == nil {

                                println("No error we are home free \(avisos?.count)")

                                if avisos?.count > 0 {

                                    if let avisoArray = avisos as? [PFObject] {
                                        for av in avisoArray {
                                            println(av["texto"]!)

                                            if let msg: AnyObject = av["texto"] {

                                                println(msg)
                                                self.mensajes.append(msg as! String)

                                            }
                                        }
                                    }
                                }
                            } else {

                                println("something got busted, mate")
                            }
                        }
                    }
                }
            } else {

                println("we screw something up")
            }
        }
    }

}

我正处于 Parse 的学习阶段,这就是为什么它在 viewDidLoad() 中,我只是在尝试一些东西。

【问题讨论】:

  • 开始删除每个! (展开可选运算符)除非您确定它不是 NIL,否则您在代码上拥有。

标签: ios swift parse-platform xcode6


【解决方案1】:
if let papa = PFUser.currentUser() 

问题在于我们没有得到用户 ID,所以从技术上讲,你正在寻找一个空值

正确的代码:

让 papa = PFUser.currentUser().objectId

试试看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多