在 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()
})
}
错误:
好像是sender的问题,可能我不该用
提前致谢
最佳答案
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/