Parse.com 查询返回 nil 的对象和崩溃的应用程序

Posted

技术标签:

【中文标题】Parse.com 查询返回 nil 的对象和崩溃的应用程序【英文标题】:Parse.com query returning nil for object and crashing app 【发布时间】:2015-06-12 19:14:24 【问题描述】:

这通常应该简单直接,但我正在努力寻找答案。我希望能够将 objectId 分配给一个数组,所以当我想更新一个列时,我可以使用query.getObjectInBackgroundWithId。我正在执行初始查询并将找到的值分配给字典。不幸的是,当我尝试分配列 objectId 时应用程序崩溃并且我得到 fatal error: unexpectedly found nil while unwrapping an Optional value

var query = PFQuery(className:"classname")
    query.whereKey("available", equalTo:true)
    query.findObjectsInBackgroundWithBlock( 
        (objects: [AnyObject]?, error: NSError?) -> Void in

        if error == nil 
            println("Successfully retrieved \(objects!.count)")

            if let objects = objects as? [PFObject] 
                for object in objects 

                    let x = dict(aColumn1: (object["column1"] as! String), aColumn2: (object["column2"] as! String), aId: (object["objectId"] as! String))

                    dictArr.append(x)

                
            
         else 
            // Log details of the failure
            println("Error: \(error!) \(error!.userInfo!)")
        
        
    )

【问题讨论】:

这一行 "let x = array(aColumn1: (object["column1"] as!String), aColumn2: (object["column2"] as!String), aId: (object[" objectId"] as! String))" 正在产生问题。作为对象内的内容 column1 或 column2 结果为 nil 并写为!您正在强制包装 nil 导致崩溃。 column1 和 column2 返回一个结果。如果我去掉aId: (object["objectId"] as! String),程序运行良好且没有错误,它会填充数组。 objectId 生成的问题很奇怪,因为它是为解析中的每个类自动生成的。 是的,我知道它是从 parse 自动生成的,您是否使用 includekey 方法来包含该类的对象,就像最初我刚使用 parse 时一样,我忘记添加,然后 objectid 得到 nill . 我需要在哪里添加 includekey 方法? query.includeKey("classname") 【参考方案1】:

尝试像这样创建你的数组:

let x = [(object["column1"] as! String),(object["column2"] as! String), (object["objectId"] as! String)]

但看起来更像是你想要一本字典,如果是这种情况,你可以试试这个:

let x = [("aColumn1": (object["column1"] as! String), "aColumn2": (object["column2"] as! String), "aId": (object["objectId"] as! String))]

【讨论】:

aId 已被赋予一个字符串类型。如果我删除 aId: (object["objectId"] as! String) 我可以检索对象并存储它们。 objectId 是唯一导致问题的。

以上是关于Parse.com 查询返回 nil 的对象和崩溃的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Parse.com 查询 10000 (10K) 个对象

UIImagePickerControllerReferenceURL 返回 nil,导致应用程序崩溃

NSEntityDescription 仅在 iPad Air 7.1 上返回 nil

UICollectionView 中的 viewForSupplementaryElementOfKind 返回 nil 并使用 swift 使应用程序崩溃

Obj-C 框架返回 nil,并让我的 Swift 代码崩溃,说“致命错误:在展开可选值时意外发现 nil”

Obj-C 框架返回 nil,并让我的 Swift 代码崩溃,说“致命错误:在展开可选值时意外发现 nil”