gpt4 book ai didi

Swift、Parse 和 Xcode 6 beta6

转载 作者:搜寻专家 更新时间:2023-10-31 22:52:31 25 4
gpt4 key购买 nike

我对 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 不符合协议(protocol) SequenceType

如果我将 objects: [AnyObject]! 更改为 objects: [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 {
...
} ...
}

最佳答案

我相信你正试图向下转换一个数组。如果你改变这个会发生什么:

for object : PFObject! in objects as PFObject {
...
}

对此:

for object: PFObject in objects as [PFObject] {
...
}

我还想指出,这可能无法达到您的预期:

if !(error != nil) {

括号前的额外感叹号会产生双重否定,这会使您的意图含糊不清。

更新

正如评论中所指出的,Parse 建议执行一个简单的 for-in 循环,而无需任何显式向下转换。

for object in objects {}

关于Swift、Parse 和 Xcode 6 beta6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25514549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com