我对Parse的查询现在在Xcode 6 beta6中引发了快速的编译器错误(请参见下面的错误)。以前运行良好(我的示例很简单,来自Parse的文档)。我已经更改了Xcode 6 beta 6中的一件事:来自“对象: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”:
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]!, error: NSError!) -> Void in
if (error == nil) {
for object in objects {
...
} ...
}
我认为您正在尝试降低阵列的质量。如果您更改此设置,将会发生什么:
for object : PFObject! in objects as PFObject {
...
}
对此:
for object: PFObject in objects as [PFObject] {
...
}
我还想指出,这可能无法达到您的预期目的:
if !(error != nil) {
括号前面的附加感叹号会创建一个双负数,这会使您的意图含糊不清。
更新
正如评论中指出的那样,Parse建议执行一个简单的for-in循环,而无需任何显式的向下转换。
for object in objects {}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句