0

我有两个模型,从 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{....

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

我发现了这篇 stackoverflow 帖子:检查来自 Alamofire 和 Swift 的多个异步响应

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

4

1 回答 1

1

基本上,您需要并行执行多个任务,并在所有任务完成时收到通知。如果您使用findObjectsInBackground()返回一个BFTask. 一旦你有了任务数组,你就可以将它们发送到并行执行(更多细节在这里):

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
    }
}
于 2016-01-06T14:15:08.103 回答