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

时间:2016-01-06 13:52:00

标签: swift parse-platform pfrelation

我有两个模型,从PFObject继承:

**食谱模型

class Recipe: PFObject, PFSubclassing{
  class func parseClassName() -> String {
    return "Recipe"
  }

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

**一种成分模型:

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?
}

我发现获取单一食谱的成分会像这样:

 let query = recipe.toIngredients.query()
 query.findObjectsInBackgroundWithBlock{....

我的问题是我有一系列食谱,我需要从中获取成分。 我需要组合多个异步响应以在另一个控制器中使用。我需要获取整个成分列表,然后是perfromSegueWithIdentifier。

我发现了这个stackoverflow帖子:Checking for multiple asynchronous responses from Alamofire and Swift

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

1 个答案:

答案 0 :(得分:1)

基本上,您需要并行执行多个任务,并在完成所有任务时收到通知。如果您使用返回BFTask的{​​{3}},则可以实现此目的。获得任务数组后,您可以将它们并行发送(更多详细信息findObjectsInBackground()):

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
    }
}