【发布时间】:2016-01-14 17:40:07
【问题描述】:
我有一些代码可以查询我的 Parse 数据库中的一个类。但有时当我登录并重定向到此视图时,我会收到“致命错误:在展开可选值时意外发现 nil”
这是我的代码:
let getPost = PFQuery(className: "Posts")
getPost.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if let objects = objects {
self.messages.removeAll(keepCapacity: true)
self.users.removeAll(keepCapacity: true)
self.usernames.removeAll(keepCapacity: true)
for object in objects {
self.messages.append(object["message"] as! String)
//////////THE LINE BELOW GIVES ME THE PROBLEM
self.usernames.append(self.users[object["userId"] as! String]!)
self.tableView.reloadData()
}
}
}
self.refresher.endRefreshing()
有人知道我做错了什么吗?
【问题讨论】:
-
避免使用
!(强制解包)如果你不能保证值不会是零,使用安全解包而不是if let和其他已知技术:stackoverflow.com/questions/24018327/… -
在重复循环的每次迭代中重新加载表视图是非常糟糕的做法。在重复循环之后执行一次。并考虑
findObjectsInBackgroundWithBlock异步工作。 -
大家好,我已经更改了我的代码并添加了注释以显示哪一行给我带来了问题
-
这个 sn-p 在函数内部 - 如果需要,我可以包含完整的函数代码
-
就在重复循环之前,
self.users的所有项目都被删除,所以self.users["whatever"]总是会失败。
标签: xcode swift parse-platform swift2