更新到最新的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 handled
和Conditional 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编码很新,所以如果有人有任何见解,我不确定到底发生了什么?
答案 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;
可以解决您的条件播送错误。