繁体   English   中英

ios快速解析:深度查询及其结果数据存在一般性问题

[英]ios swift parse: Having general issues with deep queries and their result data

在理解解析中处理更深的指针结构的正确方法时,我仍然遇到问题。

例:

具有指向CardSet的指针

CardSet具有指向课程用户的指针

可以说,我想拥有包括

  • 课程名称
  • 每个卡集的卡数

我可以在一个查询中查询所有这些吗? 是否可以使用数据而无需任何其他fetchIfNeededInBackgroundWithBlock查询?

我知道我可以通过

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

但这仅给了我一个课程对象,除非使用fetchIfNeededInBackgroundWithBlock ,否则我将fetchIfNeededInBackgroundWithBlock从此类访问任何数据(例如col“ name”),这将花费另一个查询,并且当然会花费更多时间。

如何处理所有查询的数据

包括所有指针列

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

PFObject.pinAllInBackground(objects, block: nil)

别忘了,我如何查询与CardSet相关的卡片数量?

首先,我建议在Parse中使用子类化,这样可以使表(指针等)之间的关系更加清晰。 如何对PFObject进行子类化,您可以在分析时浏览本指南

如何查询CardSet中的卡数

您需要从中获取卡的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"])
     }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM