在Parse和Swift中使用指针进行查询

时间:2015-10-06 21:11:02

标签: ios swift parse-platform

我正在尝试使用Parse中的指针进行查询。

基本上我有两个课程"commentsTable""_User",我希望在确定的帖子上收到来自课程"commentsTable"的用户的评论,然后获取username以及来自班级profile_pic

"_User"

_用户类 enter image description here

commentsTable Class enter image description here

    func loadAndShowComments(){
    let query2 = PFQuery(className: "commentsTable")
    query2.orderByDescending("createdAt")
    query2.whereKey("newsColumns", equalTo: printteste!)
    query2.includeKey("username")

    query2.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error: NSError?) -> Void in

        if let objects = objects as [PFObject]? {

            for object in objects {

                print(object["commentColumn"])

            }

        }


        for cardset in objects! {
            var lesson = cardset["username"] as! PFObject
            var name = lesson["username"] as! String
            print("By user: \(name)")
        }

我能够看到查询,我打印结果我有以下输出:

This is a post!
This is a test post!
By user: teste@teste.com
By user: mmachado

在我的应用程序中,我在TableView中显示此信息,我成功地可以在函数cellForRowAtIndexPath中显示查询的结果:

    if let usuarioComentario = object?["commentColumn"] as? String {
        cell?.usuarioComentario?.text = usuarioComentario
    }

但是我无法返回其他课程的值_User

我想我误解了一些概念但是在这一点上我不知道什么概念,任何想法?

感谢。

1 个答案:

答案 0 :(得分:3)

使用query2.includeKey("username"),您已检索与每个User对象关联的commentsTable数据的所有

您可以使用以下方式访问相关的User数据。

if let commentUser = object["username"] as? PFUser {
    let name = commentUser["username"] as! String
    let profilePicture = commentUser["profile_pic"] as! PFFile
}

您需要将查询结果存储到数组中以供以后使用(如果您尚未使用)。如果您使用的是Parse提供的PFQueryTableViewController,则会通过实施queryForTable()方法为您处理,结果会自动存储在名为objects的字典数组中。

值得注意的是,您还必须加载PFFile,因为它们未包含在查询结果中。您需要将PFFile分配给PFImageView,然后拨打loadInBackground。请参阅下面的示例。

let imageView = PFImageView()

// Set placeholder image
imageView.image = UIImage(named: "placeholder")

// Set remote image
imageView.file = profilePicture

// Once the download completes, the remote image will be displayed
imageView.loadInBackground { (image: UIImage?, error: NSError?) -> Void in
    if (error != nil) {
        // Log details of the failure
        println("Error: \(error!) \(error!.userInfo!)")            
    } else {
        println("image loaded")
    }
}

最后,我建议将UsercommentsTable指针的名称从“用户名”更改为“用户”,这样就不会与用户类的用户名字段混淆。 Here's a link to a great tutorial which you may also find helpful