Swift,解析和Xcode 6 beta6

汤姆-Lunabee.com

我对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章