我有两个模型,从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的正确方法吗?
答案 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
}
}