试图在Parse中查询对象

时间:2015-10-27 18:28:28

标签: ios swift parse-platform pfquery pfuser

query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in

        if error == nil {
            if let objects = objects as? [PFObject] {
                for object in objects {
                    print("woot")
                }
            }

        } else {
            // Log details of the failure
            print("Error: \(error) \(error!.userInfo)")
        }
        dispatch_async(dispatch_get_main_queue()){
            //reload the table view

            query.cachePolicy = PFCachePolicy.NetworkElseCache
        }

    }

由于某种原因,行:

query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in

给我错误:

  

无法转换类型'([AnyObject] ?, NSError?) - >的值void到预期的参数类型' PFQueryArrayResultBlock?'

我不知道如何修复错误。

谢谢!

3 个答案:

答案 0 :(得分:0)

结果块应如下所示:

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

    if error == nil {
        if let objects = objects as? [PFObject] {
            for object in objects {
                print("woot")
            }
        }

    } else {
        // Log details of the failure
        print("Error: \(error) \(error!.userInfo)")
    }
    dispatch_async(dispatch_get_main_queue()){
        //reload the table view

        query.cachePolicy = PFCachePolicy.NetworkElseCache
    }
}

请参阅Parse docs查询。

答案 1 :(得分:0)

在第一行中将'AnyObject'更改为'PFObject'。 Parse v1.9.0改变了PFObject获取函数以与iOS 9 / Swift 2(https://parse.com/docs/downloads)兼容。

然后你不必将'扮演'?第4行[PFObject]。

答案 2 :(得分:0)

Parse不再使用AnyObject for Swift 2.0。所以对于你的代码更改:

query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in

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

由于您不再需要将对象转换为PFObject,因此可以将其缩短为:

if error == nil {
         for object in objects! {
                print("woot")
         }
    } else {...

希望这有帮助!