【问题标题】:Perform action when all responses are retrieved from Parse从 Parse 检索到所有响应时执行操作
【发布时间】:2016-04-10 15:25:13
【问题描述】:

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

【问题讨论】:

标签: swift parse-platform pfrelation


【解决方案1】:

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

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-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多