ios - 如何使用 swift 从 Parse 上的用户指针检索数据

标签 ios facebook swift parse-platform swift2

在 Parse 上,我有用户使用 Facebook 个人资料和电子邮件登录个人资料。所以我想在我的类似 Twitter 的应用程序中为用户埋葬数据。

在我的 "messages" Parse 类中,我有 column "sender" 包含要解析的pointers用户。

我只想检索并显示 "messages" 类中的用户名 "sender" 列中包含指向我需要数据的 PFUsers 的指针 key

  • “名字”
  • “姓氏”
  • “个人资料_图片”

我怎样才能检索他们的数据(例如名称和图像)以便在表格 View 中显示它们?

这些是我的数组的声明:

var sendersArray : [String] = []
var picturesArray : [NSData] = []

也许我可以使用像这样的元组,但我不明白如何从指针中获取数据

for user in list  {

    let firstName = "fist_name"
    let lastName = "last_name"
    let oProfileImage = NSData() //"image_profile" as! NSData

    otherUsers.append((oName: firstName, oLastName: lastName, oImageProfle: oProfileImage))

}

版本 - 1:

我开始打印整个 pf 对象

//******************************************************

func theSearch() {



    let theSearchQuery = PFQuery(className: "Messages")


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

        for object in objects!  {

            let theName = object.sender!

            print(object)
            print(theName)

            sendersArray.append(theName)

            let profilePicture = object["profile_pic"] as! PFFile
            picturesArray.append(profilePicture)

        }

        self.tableView.reloadData()

    })

}
//*******************************************************

版本 - 2:

然后,找到了这个解决方案,但仍然没有

func theSearch() {



    let theSearchQuery = PFQuery(className: "Messages" )

     theSearchQuery.includeKey("sender")

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

        for object in objects!  {

            let theName = object.sender!["first_name"] as? String

            print(object)
            print(theName)

            sendersArray.append(theName)

            let profilePicture = object["profile_pic"] as! PFFile
            picturesArray.append(profilePicture)

        }

        self.tableView.reloadData()

    })

}

错误:

enter image description here

好像是sender的问题,可能我不该用

enter image description here

提前致谢

最佳答案

  let theName = object.objectForKey("sender")!.objectForKey("first_name") as! String

完整代码:

   func theSearch() {



let theSearchQuery = PFQuery(className: "Messages")

 theSearchQuery.includeKey("sender")
 theSearchQuery.findObjectsInBackgroundWithBlock({
    (objects : [AnyObject]?, error : NSError?) -> Void in

    for object in objects!  {

        let theName = object.objectForKey("sender")!.objectForKey("first_name") as! String

        print(object)
        print(theName)

        self.sendersArray.append(theName)

        let profilePicture = object["profile_picture"] as! PFFile
        self.picturesArray.append(profilePicture)

    }

    self.tableView.reloadData()

   })

}

此外,您的 picturesArray 应该是 PFFile 类型,如下所示:

 var picturesArray = [PFFile]()

不是 NSData。在类里面改变这一点。

-----编辑-----: 如果您想从解析查询中检索图像,请执行以下操作:

1) 在您的类的顶部,声明以下数组来存储结果:

    // your images will be stored in the file array
    var fileArray = [PFFile]()

  // your first and last names will be stored in String Arrays:
  var firstNameArray = [String]()
  var lastNameArray = [String]()

2) 执行查询:

   let query1 = PFQuery(className: "_User")
   query1.orderByDescending("createdAt")
   query1.findObjectsInBackgroundWithBlock({
      (objects : [AnyObject]?, error : NSError?) -> Void in
         if error == nil {
           for x in objects! {
             let firstName = x.objectForKey("first_name") as! String
             let lastName = x.objectForKey("last_name") as! String
             self.firstNameArray.append(firstName)
             self.lastNameArray.append(lastName)

            if x.objectForKey("profile_picture") as? PFFile == nil { 
               print("do nothing cause it's nil")
            }
           else {
              let file:PFFile = x.objectForKey("profile_image") as! PFFile
              self.fileArray.append(file)
            }


            } 
            self.tableView.reloadData()

         }

    })

请注意,我使用的是 Swift 2 和 Xcode 7。Xcode 6.4 和 Swift 1.2 中的语法略有不同。

关于ios - 如何使用 swift 从 Parse 上的用户指针检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719148/

相关文章:

ios - 通过其核心 api 将图像上传到 DropBox 服务器会在 iOS 中出错

ios - 如何在UIView上获得长按时间

Android Facebook 发布错误 xmlPaseEntityRef : no name

ios - 何时使用 UITouch 与 UIScroll

ios - 在 iOS 上增加计步器初始响应

ios - reloadRows 将创建新单元格

ios - Swift 中的字符串操作(子字符串)

Facebook Graph API – 公共(public)页面事件的访问被拒绝

facebook - OneSignal SDK & Facebook SDK & Unity3D

ios - 如何在向下滚动时隐藏导航栏和工具栏? Swift(如 myBridge 应用程序)