简体   繁体   English

ios快速解析:如何收集指针数据

[英]ios swift parse: how to collect pointer data

I have this query: 我有这个查询:

        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)
            }
        }

The result looks like this: 结果看起来像这样:

<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>";
}

Class "CardSet" has a pointer "lesson" to class "Lesson". 类“ CardSet”具有指向类“课程”的指针“课程”。 What can I do to have Lesson.name available in the query result? 如何在查询结果中提供Lesson.name? Or do I need to query a second time? 还是我需要第二次查询? That would be bad because of the amount of requests to parse...? 由于要解析的请求量很大,这会很糟糕...? Is there any better way getting all pointed data in just one query? 有什么更好的方法可以在一个查询中获取所有指向的数据?

You can tell Parse to fetch a related object using the includeKey method: 您可以使用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)")
    }
}

Mentioned in the Relational Queries section of the documentation. 在文档的“ 关系查询”部分中提到。

you get passed an array of objects so you have to get the CardSet from the array: 您传递了一个对象数组,因此必须从该数组获取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)
    }
})

first you must use includekey then save data as PFObject in findobjectwithdatablock -> if data is PFUser save as PFUser else save as PFObject 首先,您必须使用includekey,然后在findobjectwithdatablock中将数据另存为PFObject->如果数据为PFUser,另存为PFUser,否则另存为PFObject

Example : 范例:

var veriable  = (PFUser)() 
YourQueryFindObjectBlock {  
self.veriable = result["pointerCol"] as PFUser // if pointer has user data 
}

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

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