arrays – Swift Async完成以返回自定义类中的Array

arrays – Swift Async完成以返回自定义类中的Array,第1张

概述我将尽力解释这个问题. 我正在使用Parse.com并从Parse数据库类返回数据.我想把这个parse.com调用放在自定义类中的自己的函数中.我遇到的问题是完成.它去哪儿了?我已经尝试了很多不同版本的添加到我的功能,但它无法正常工作. 以下是获取类名,表名和排序描述符并返回数组的函数: func queryDataInBackgroundWithBlock(parseClass:String, 我将尽力解释这个问题.

我正在使用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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1007180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存