我有这个结构:

  • 用户
  • CardSet,其指针“user”指向User.objectId,col为“名称”
  • 带有指向CardSet.objectId的指针“cardset”和col“名称”的卡

  • 我想选择所有卡数据,包括currentUser的CardSet名称。我在这里很迷失,因为我是新来的解析和敏捷者,并且不知道如何真正完成这项工作。

    我检查了文档并了解我必须包括
    var query = PFQuery(className: "Card")
    query.includeKey("cardset")
    

    获取卡集对象。
    我没有得到的是如何仅选择当前用户的数据?

    最后,如何将所有数据放入数组以用于表视图并将数据输出到表单元格标签?

    这是我到目前为止所拥有的:
    var noteObjects: NSMutableArray! = NSMutableArray()
    func fetchAllObjects(){
    
            var query = PFQuery(className: "Card")
            query.includeKey("cardset")
            query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
    
                if (error == nil){
    
                    var temp: NSArray = objects as NSArray
                    self.noteObjects = temp.mutableCopy() as NSMutableArray
                    self.tableView.reloadData()
    
                }else{
                    println(error.userInfo)
                }
            }
            println(self.noteObjects)
        }
    

    最佳答案

    您的数据模型是明智的,但要克服它,就需要更复杂的查询。要获取Cards用户为当前用户的CardSet,必须在Card查询中嵌入CardSet查询。执行此操作的方法是whereKey:matchesQuery:

    // this one finds CardSets whose user is currentUser
    var innerQuery = PFQuery(className: "CardSet")
    innerQuery.whereKey("user", equalTo:PFUser.currentUser())
    
    // this one finds Cards whose CardSets match the preceding query
    var query = PFQuery(className: "Card")
    query.includeKey("cardset")
    query.whereKey("cardset", matchesQuery:innerQuery);
    query.findObjectsInBackgroundWithBlock //...
    

    09-17 04:08