我对 Parse 的查询现在在 Xcode 6 beta6 中引发了一个快速编译器错误(请参阅下面的错误)。它以前工作得很好(我的例子很简单,来自 Parse 的文档)。我已经改变了来自 Xcode 6 beta 6 的一件事:从“objects: AnyObject[]!” 到“对象:[AnyObject]!” (由于错误“数组类型现在用括号括住元素类型”)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if !(error != nil) {
NSLog("Successfully retrieved \(objects.count) objects.")
for object : PFObject! in objects { ... } ...
//错误:类型 [AnyObject] 不能被隐式向下转换为 'PFObject',你的意思是使用 'as' 强制向下转换吗?
如果我按照前一个错误的建议强制向下转换,我会收到另一个错误:
for object : PFObject! in objects as PFObject {
...
}
//错误: PFObject 类型不符合协议 SequenceType
如果我改变对象:[AnyObject]!按对象:[PFObject]!我收到以下错误:
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]!, error: NSError!) -> Void in
if !(error != nil) {
for object : PFObject! in objects {
//错误:AnyObject 与 PFObject 不同
解决编译器问题的答案
正确答案如下(Xcode 建议向下转换为 PFObject,而向下转换在“对象”上,一个数组):
for object : PFObject! in objects as [PFObject] {
...
}
更新了执行时间的正确答案
上面的答案是修复编译器问题,而不是执行。与 Parse 人员聊天后,他们的文档不是最新的,因为 beta 6 已经发布。要循环从查询返回的 PFObjects 对象,只需执行“for object in objects {}”:
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]!, error: NSError!) -> Void in
if (error == nil) {
for object in objects {
...
} ...
}