gpt4 book ai didi

ios - Swift 2.0 中的自定义 PFQuery 和 PFObject 连接

转载 作者:可可西里 更新时间:2023-11-01 01:37:45 26 4
gpt4 key购买 nike

我为 PFQueryPFObject 创建了一个自定义类,我只是继承/扩展这些类,而不必担心在我使用的任何地方导入 Parse查询或对象。

但是,我在尝试将 PFQueryPFObject 与其自定义类混合在一起时遇到了问题。

这是我的自定义类,理论上它们现在应该具有与 PFObjectPFQuery 相同的属性和效果,它们在大多数情况下都是如此。

class CustomQuery: PFQuery {
override init(className:String) {
super.init(className: className)
}
}

class CustomObject: PFQbject {
override init(className:String) {
super.init(className: className)
}
}

但是我在尝试使用查询中的“..InBackgroundWithBlock”函数时遇到了问题。这是代码:

func GetAsyncObjects(query:CustomQuery, closure: (dataObjects:[CustomObject]) -> ()) {
query.findObjectsInBackgroundWithBlock {(returnedObjects:[CustomObject]!, error:NSError?) -> Void in
closure(dataObjects: returnedObjects!)
}
}

错误发生在上面代码块的第二行,“returnedObjects:[CustomObject]!”出现以下错误:

Cannot convert value of type '([CustomObject]!, NSError?) -> Void' to expected argument type 'PFQueryArrayResultBlock?'

我实在找不到解决方案。显然,将那里的 CustomObject 更改为 PFObject 是可行的,但这使我的 CustomObject 和 CustomQuery 的全部意义都过时了。

谢谢!

最佳答案

可能不是这里的核心问题,而是来自 PFQbjectCustomObject 子类(注意有一个“Q”而不是“O”)。此外,您还需要在 GetAsyncObjects 函数的闭包中使用 PFObject,因为 block 的签名要求返回的对象为 [PFObject] 类型? 。您可以通过执行以下操作来规避此问题:

// in CustomQuery class
func GetAsyncObjects(closure: (dataObjects:[CustomObject]) -> ()) {
self.findObjectsInBackgroundWithBlock {(returnedObjects:[PFObject]?, error:NSError?) -> Void in
// explicitly cast to your custom object
closure(dataObjects: returnedObjects as! [CustomObject])
}
}

因此,为了让闭包返回一个 CustomObject 数组,您只需将从 Parse 返回的 [PFObject]? 数据转换为您想要的数组类型,在本例中为 [CustomObject]

关于ios - Swift 2.0 中的自定义 PFQuery 和 PFObject 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34335285/

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