【问题标题】:Parse.com query returning nil for object and crashing appParse.com 查询返回 nil 的对象和崩溃的应用程序
【发布时间】: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")

标签: ios swift parse-platform pfquery objectid


【解决方案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 是唯一导致问题的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多