[英]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.