【问题标题】:Swift 2 + Parse: Unexpectedly found nil while unwrapping an Optional valueSwift 2 + Parse:在展开可选值时意外发现 nil
【发布时间】: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


【解决方案1】:

就在重复循环之前,self.users 的所有项目都被删除,所以self.users["whatever"] 总是会失败。

PS:并在重复循环之后加上self.tableView.reloadData()

【讨论】:

  • 再次感谢。我是初学者,所以这是一次非常有用的学习经历!
猜你喜欢
  • 1970-01-01
  • 2018-09-22
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多