[英]how to retrive data from a user pointer on Parse using swift
在Parse上,我的用户具有Facebook个人资料和电子邮件登录个人资料。 因此,我想在类似Twitter的应用程序中掩埋用户数据。
在解析的"messages"
类中,我有"sender"
列 ,其中包含用于解析用户的指针 。
我只想检索并在"sender"
列中包含的"messages"
类中显示用户名,但其中包含指向PFUsers的指针,我需要这些键的数据
我如何检索其名称和图像之类的数据以便在表格视图中显示它们?
这些是我的数组的声明:
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.