繁体   English   中英

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

[英]how to retrive data from a user pointer on Parse using swift

在Parse上,我的用户具有Facebook个人资料和电子邮件登录个人资料。 因此,我想在类似Twitter的应用程序中掩埋用户数据。

在解析的"messages"类中,我有"sender" ,其中包含用于解析用户的指针

我只想检索并在"sender"列中包含的"messages"类中显示用户名,但其中包含指向PFUsers的指针,我需要这些键的数据

  • “名字”
  • “姓”
  • “ profile_picture”

我如何检索其名称和图像之类的数据以便在表格视图中显示它们?

这些是我的数组的声明:

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

    })

}

错误:

在此处输入图片说明

似乎是发件人的问题,也许我不应该使用它

在此处输入图片说明

提前致谢

  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和Xcode7。语法在Xcode 6.4和Swift 1.2中略有不同。

暂无
暂无

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

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