我正在使用Parse.com并从Parse数据库类返回数据.我想把这个parse.com调用放在自定义类中的自己的函数中.我遇到的问题是完成.它去哪儿了?我已经尝试了很多不同版本的添加到我的功能,但它无法正常工作.
以下是获取类名,表名和排序描述符并返回数组的函数:
func queryDataInBackgrounDWithBlock(parseClass:String,parSEObject:String,sortDescriptor:NSSortDescriptor) -> [Any]
当我添加完成时,我使用(可能不正确):
func queryDataInBackgrounDWithBlock(parseClass:String,sortDescriptor:NSSortDescriptor,completion: (result: Any)->VoID)
现在在函数内部,我使用Parse.com代码来获取数据
query.findobjectsInBackgrounDWithBlock { (objects: [AnyObject]!,error: NSError!) -> VoID in if error == nil { // Do something with the found objects for object in objects { self.arrayOfObjects.append(object[parSEObject]!) } } else { // Log details of the failure println("Error: \(error) \(error.userInfo!)") } }
我的目标是将参数发送到我的类函数,从parse.com获取数据,然后在异步调用之后将数据作为数组返回
我想这样称呼它:
myClass.queryDataInBackgrounDWithBlock("databasename",parSEObject: "columnname",sortDescriptor: orderBy){ (result: Any) in println(result)}
这几乎就像是嵌套完成.完成后如何返回数组?是交给函数然后返回它,还是需要在嵌套代码中返回,或者是什么?它检索数据,但问题是完成后返回.
更新:
正如我在下面的评论中所说:
query.findobjectsInBackgrounDWithBlock({ (objects: [AnyObject]!,error: NSError!) -> VoID in if error == nil { // Do something with the found objects for object in objects { self.arrayOfObjects.append(object[parSEObject]!) } } else { // Log details of the failure println("Error: \(error) \(error.userInfo!)") }},completion: { //do something here})
这将返回错误:“调用额外参数完成”
我不知道如何在块的末尾添加完成,所以我在块周围添加了()并插入了完成.这显然是错误的,但我不知道如何在亚马逊建议的块结束时添加完成
更新2:
func queryDataInBackgrounDWithBlock(parseClass:String,sortDescriptor:NSSortDescriptor) -> [Any]{ var query = PFquery(classname:parseClass) if sortDescriptor.key != "" { query.orderBySortDescriptor(sortDescriptor) } query.findobjectsInBackgrounDWithBlock { (objects: [AnyObject]!,error: NSError!) -> VoID in if error == nil { // Do something with the found objects for object in objects { self.arrayOfObjects.append(object[parSEObject]!!) } } else { // Log details of the failure println("Error: \(error) \(error.userInfo!)") } } return self.arrayOfObjects //<-- needs to move to completion }解决方法 在函数queryDataInBackgrounDWithBlock内部,您将在名称完成时收到完成块.它需要一个参数.所以,在你获得数据之后,你做的最后一件事就是调用它,将数据交给它:
completion(result:myData)
由于query.findobjectsInBackgrounDWithBlock本身是异步的,因此您需要将该调用作为query.findobjectsInBackgrounDWithBlock块中的最后一个内容.
像这样:
func queryDataInBackgrounDWithBlock( parseClass:String,completion: (result: Any)->VoID) { var query = PFquery(classname:parseClass) if sortDescriptor.key != "" { query.orderBySortDescriptor(sortDescriptor) } query.findobjectsInBackgrounDWithBlock { (objects: [AnyObject]!,error: NSError!) -> VoID in if error == nil { // Do something with the found objects for object in objects { self.arrayOfObjects.append(object[parSEObject]!!) } } else { // Log details of the failure println("Error: \(error) \(error.userInfo!)") } completion(result:self.arrayOfObjects) }}总结
以上是内存溢出为你收集整理的arrays – Swift Async完成以返回自定义类中的Array全部内容,希望文章能够帮你解决arrays – Swift Async完成以返回自定义类中的Array所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)