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 的对象和崩溃的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
UIImagePickerControllerReferenceURL 返回 nil,导致应用程序崩溃
NSEntityDescription 仅在 iPad Air 7.1 上返回 nil
UICollectionView 中的 viewForSupplementaryElementOfKind 返回 nil 并使用 swift 使应用程序崩溃