ios swift parse:深度查询及其结果数据存在一般问题

时间:2015-03-11 09:58:19

标签: ios swift parse-platform

我仍然无法理解在解析中处理更深层指针结构的正确方法。

示例:

指向 CardSet

CardSet 指向课程用户

让我们说,我想拥有所有的CardSet,包括

  • Lesson.name
  • 每张CardSet的卡数

我可以在一个查询中查询所有这些内容吗? 并且在没有任何其他fetchIfNeededInBackgroundWithBlock查询的情况下提供数据?

我知道我可以通过

获得课程
var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.includeKey("lesson")

但这只给了我一个课程对象,我不能从这个课程中访问任何数据(比如col" name"),除非我使用fetchIfNeededInBackgroundWithBlock什么需要另一个查询,当然还有更多加载的时间。

如何获取所有查询数据

包括所有指针列

以便使用

将此数据固定到本地数据存储区

PFObject.pinAllInBackground(objects, block: nil)

不要忘记,如何查询与CardSet相关的卡数?

1 个答案:

答案 0 :(得分:0)

首先,我建议在Parse中进行子类化,它使表(指针等)之间的关系更加清晰。 如何子类化PFObject,你可以在解析

上探索this guide

如何查询CardSet中的卡数

您需要卡片组,您需要卡片。 (PFObject或子类PFObject)。 然后就这样做:

var query = PFQuery(classname: "cards")
query.whereKey("CardSet", equalTo: yourCardSetObject)
//Synchronously
query.findObjects().count
//Asynchronously
query.findObjectsInBackgroundWithBlock({
      (objects, error) in
      if error != nil {
           println(error.localizedDescription)
           return
      }
      objects.count             
 })

如何获取课程名称

正如我所说的那样,建议继承PFObjects,因为你需要将那些对调试不太有趣的对象转换成可怕的代码。 我这样做了:

var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.includeKey("lesson")
query.findObjectsInBackgroundWithBlock({
     (objects, error) in
     if error != nil {
         println(error.localizedDescription)
         return
     }
     for object in objects as? [PFObject] {
         var lesson = object["lesson"] as PFObject
         println(lesson["name"])
     }
})