findObjectsInBackgroundWithBlock块签名不正确

时间:2015-04-10 14:18:01

标签: ios swift parse-platform

我试图用这段代码获取一堆行

var query = PFQuery(className:"Test")
query.findObjectsInBackgroundWithBlock {
    (objects: NSArray?, error: NSError?) in

    // do something
}

但它没有编译,我收到以下错误:

  

无法调用' findObjectsInBackgroundWithBlock'使用类型'((NSArray?,NSError?) - > _)'

的参数列表

the docs我找到了这个:

  

block:要执行的块。它应该有以下参数签名:
  ^(NSArray *对象,NSError *错误)

这似乎与我非常相似。我做错了什么?

5 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。你使用的是swift1.2吗?如果是这样,我认为这与展开"!"有关。尝试改变你的"!"到"?"

答案 1 :(得分:2)

试试这个 -

(objects:[AnyObject]!, error: NSError!) in

然后将[AnyObject]转换为[PFObject]

let myObjects = objects as? [PFObject]

答案 2 :(得分:0)

你试过吗

query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]!, error:NSError!) -> Void in
//code
}

答案 3 :(得分:0)

基本上说不再需要这两个问号了。

findObjectsInBackgroundWithBlock {(objects: NSArray?, error: NSError?)

变为

findObjectsInBackgroundWithBlock {(objects: NSArray, error: NSError

如果我错了,有人可以纠正我,但这是我从谷歌等处注意到的。

答案 4 :(得分:0)

another post中找到正确的语法。参数列表或包装/解包对象没有错;相反,闭包必须作为参数传递给findObjectsInBackgroundWithBlock。它的编写方式如下:

query.findObjectsInBackgroundWithBlock( { (NSArray results, NSError error) in
    // do something
})