首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在从Parse检索所有响应时执行操作

在从Parse检索所有响应时执行操作
EN

Stack Overflow用户
提问于 2016-01-06 13:52:00
回答 1查看 66关注 0票数 0

我有两个模型,来自PFObject的子类:

**食谱模型

代码语言:javascript
复制
class Recipe: PFObject, PFSubclassing{
  class func parseClassName() -> String {
    return "Recipe"
  }

 @NSManaged var name: String?
 var toIngredients: PFRelation! {
   return relationForKey("ingredients")
 }
}

**成分模型:

代码语言:javascript
复制
class Ingredient: PFObject, PFSubclassing{
  class func parseClassName() -> String {
      return "Ingredient"
  }
  @NSManaged var category: String?
  @NSManaged var ingredient: String?
  @NSManaged var amount: NSNumber?
  @NSManaged var unit: String?
}

我发现得到一个单一配方的原料,效果如下:

代码语言:javascript
复制
 let query = recipe.toIngredients.query()
 query.findObjectsInBackgroundWithBlock{....

我的问题是,我有一系列的食谱,我需要从配料。我需要组合多个异步响应,以便在另一个控制器中使用。我需要拿出所有的配料,然后是perfromSegueWithIdentifier。

我发现了一个堆栈溢出的帖子:检查来自Alamofire和Swift的多个异步响应

这是使用Parse和PFRelation的正确方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-06 14:15:08

基本上,您需要并行执行多个任务,并在它们全部完成时得到通知。如果使用findObjectsInBackground(),则可以实现这一点,它返回一个BFTask。一旦有了任务数组,就可以将它们并行执行(更详细的这里):

代码语言:javascript
复制
let tasks = recipes.map { $0.toIngredients.query().findObjectsInBackground() }
let aggregateTask = BFTask(forCompletionOfAllTasks: tasks)
aggregateTask.continueWithBlock { task in
    if task.error() { 
        // handle the error
    } else {
       // grab the results, perform the seque
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34634805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档