[英]ios swift parse: how to collect pointer data
我有这个查询:
var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if (error == nil) {
// found
}else{
println(error.userInfo)
}
}
结果看起来像这样:
<CardSet: 0x7c892120, objectId: 2yty7cpnyF, localId: (null)> {
ACL = "<PFACL: 0x7be65450>";
lesson = "<Lesson: 0x7beaabd0, objectId: JV7trFTx5Z>";
name = "I am your CardSet";
public = 1;
user = "<PFUser: 0x7be834a0, objectId: baz8ObNsmM>";
}
类“ CardSet”具有指向类“课程”的指针“课程”。 如何在查询结果中提供Lesson.name? 还是我需要第二次查询? 由于要解析的请求量很大,这会很糟糕...? 有什么更好的方法可以在一个查询中获取所有指向的数据?
您可以使用includeKey
方法告诉Parse获取相关对象:
var query = PFQuery(className: "CardSet")
query.whereKey("user", equalTo: PFUser.currentUser())
query.includeKey("lesson")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) in
for cardset in objects {
var lesson = cardset["lesson"] as PFObject
var name = lesson["name"] as String
println("retrieved related lesson: \(post) with name: \(name)")
}
}
在文档的“ 关系查询”部分中提到。
您传递了一个对象数组,因此必须从该数组获取CardSet:
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if (error == nil) {
for object in objects { //note: if objects is always of size 1, just use objects[0]
var cardset = object as CardSet //get the entry
var lesson = cardset.lesson
}
}else{
println(error.userInfo)
}
})
首先,您必须使用includekey,然后在findobjectwithdatablock中将数据另存为PFObject->如果数据为PFUser,另存为PFUser,否则另存为PFObject
范例:
var veriable = (PFUser)()
YourQueryFindObjectBlock {
self.veriable = result["pointerCol"] as PFUser // if pointer has user data
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.