解析iOS SDK 1.8.5导致try throw& PFObject条件转换错误

时间:2015-10-01 17:11:03

标签: ios xcode swift parse-platform

更新到最新的Parse SDK 1.8.5后,我收到围绕findObjectsInBackgroundWithBlock功能的两个错误。两个错误在同一行返回:

if let objects = query.findObjects() as? [PFObject]

我尝试将其更改为as [PFObject]?但没有运气。错误如下:

Call can throw, but it is not marked with 'try' and the error is not handledConditional cast from '[PFObject]' to '[PFObject]' always succeeds

query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
   if error == nil {

   if let objects = query.findObjects() as? [PFObject] {

       for object in objects {

           object.deleteInBackgroundWithBlock{ (success, error) -> Void in
                if (success) {
                     print("Worked")
                     print(objects.count)
                     self.viewDidAppear(true)

                } else {
           }
       }

我研究过类似的问题,并尝试将其修复为query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in,但这也没有做任何事情。

我不确定如何解决这些错误中的任何一个,并且对于它们突然弹出的原因感到非常困惑。我的所有功能都运行得很好,已经持续了好几个星期,突然间出现了这些错误。

将其改为:

if let objects = query.findObjects() as? [PFObject]

if let objects = objects as [PFObject]?

似乎解决了这个问题,但我不确定它现在是否会正常运行。

对于具有相同错误的其他行,XCode建议将其更改为:

self.rooms = (results as [PFObject]?)!

这消除了错误。我对Swift编码很新,所以如果有人有任何见解,我不确定到底发生了什么?

2 个答案:

答案 0 :(得分:2)

使用findObjects()使用新更新要困难得多。这是因为使用Xcode 7和Swift 2,Swift在处理错误方面变得更好,而Parse利用这些新方法允许findObjects()抛出错误。处理错误并提供其他代码以便在出现此类错误时运行将是您的工作。除了这些新要求之外,findObjects()还会同步运行,并会降低您的应用速度。您应该使用异步运行的findObjectsInBackground()。这将解决您的两个问题。如果你需要实现这个功能,那么网上有很多文档和问题/答案。

答案 1 :(得分:0)

if let objects = objects as [PFObject]?删除import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; 可以解决您的条件播送错误。