Swift:如何得到Parse的许多用户的名字和照片

我有一大堆用户在我的消息应用程序,获取我的“消息”类,我需要从我的应用程序从他们的parsingconfiguration文件中获取发件人的姓氏和configuration文件图像,以显示在每个消息在tableView。

我只想在tableView中显示“发件人”列中包含的类“消息”中的用户名称,其中包含指向PFUsers(我需要“first_name”,“last_name”,“profile_picture”)的指针

我的用户类

在这里输入图像说明

我的消息类

在这里输入图像说明

更新!

不能得到问题的地方,如果我downcasts的东西,其他的东西必须改变。 这里更新的代码:

findTimeLineDataQuery.includeKey("sender") findTimeLineDataQuery.findObjectsInBackgroundWithBlock({ (objects : [AnyObject]?, error : NSError?) in if let objects = objects where error == nil { var chats:(timelinechatsData: [String], chatsDate: [NSDate]) = ([], []) //date might be NSDate var message: (messageObjts: [String], messageSender: [String]) = ([], []) var datesToString: [String] { get { var stringDates:[String] = [] let formatter = NSDateFormatter() formatter.dateFormat = "dd-MM-yyyy" //change the format as you wish for date in dates { stringDates.append(formatter.stringFromDate(date)) } return stringDates } } for singleObject in objects { if let user = singleObject["sender"] as? PFObject { let first_name = user["first_name"] as! String let last_name = user["last_name"] as! String //Cast it to how you saved it. I can't see it from the picture so I assumed you saved it as NSData let picture = user["picture"] as! NSData self.picturesProfilesArray.append(picture) //once you fetch the user data, you can save it in a dictionary or however you want and later call it from cellForRowAtIndex } if let stringData = singleObject["message"] as? String { chats.timelinechatsData.append(stringData) if let messageDate = singleObject.createdAt { chats.chatsDate.append(messageDate!) } } //new if let messageObject = singleObject["messageObject"] as? String { message.messageObjts.append(messageObject) } //new senderNickname if let messageSender = singleObject["senderNickname"] as? String { message.messageSender.append(messageSender) } } //update self dispatch_async(dispatch_get_main_queue()) { self.timelineChatsDataArray += chats.timelinechatsData self.chatsDateArray += datesToString self.messageObjectArray += message.messageObjts self.messageSenderArray += message.messageSender self.tableView.reloadData() } } }) 

变化

所以我的

 var chatsDateArray : [NSDate] = [] 

 let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MM-dd-yyyy HH:mm" let useDate = dateFormatter.stringFromDate(self.chatsDateArray[indexPath.row]) cell.dateMessageLabel.text = useDate 

应该成为

  var chatsDateArray : [String] = [] let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MM-dd-yyyy HH:mm" let useDate = String(self.chatsDateArray[indexPath.row]) cell.dateMessageLabel.text = useDate 

但是这会导致:

 Initialization of immutable value 'first_name' was never used; consider replacing with assignment to '_' or removing it Initialization of immutable value 'last_name' was never used; consider replacing with assignment to '_' or removing it 

这消失通过改变var聊天(chatsDate)回到string,但这会导致

  Cannot convert value of type 'NSDate' to expected argument type 'String' 

 if let messageDate = singleObject.createdAt { chats.chatsDate.append(messageDate!) } } 

您可以使用'includeKey'来访问相关类的指针值

 findTimeLineDataQuery.includeKey("sender") findTimeLineDataQuery.findObjectsInBackgroundWithBlock({ (objects : [AnyObject]?, error : NSError?) in if let objects = objects where error == nil { var chats:(timelinechatsData: [String], chatsDate: [NSDate]) = ([], []) //date might be NSDate var message: (messageObjts: [String], messageSender: [String]) = ([], []) var datesToString: [String] { get { var stringDates:[String] = [] let formatter = NSDateFormatter() formatter.dateFormat = "dd-MM-yyyy" //change the format as you wish for date in dates { stringDates.append(formatter.stringFromDate(date)) } return stringDates } } for singleObject in objects { if let user = singleObject["sender"] as! PFObject { let first_name = user["first_name"] as! String let last_name = user["last_name"] as! String //Cast it to how you saved it. I can't see it from the picture so I assumed you saved it as NSData let picture = user["picture"] as! NSData picturesProfilesArray.append(picture) //once you fetch the user data, you can save it in a dictionary or however you want and later call it from cellForRowAtIndex } if let stringData = singleObject["message"] as? String { chats.timelinechatsData.append(stringData) if let messageDate = singleObject.createdAt { chats.chatsDate.append(messageDate) } } //new if let messageObject = singleObject["messageObject"] as? String { message.messageObjts.append(messageObject) } //new senderNickname if let messageSender = singleObject["senderNickname"] as? String { message.messageSender.append(messageSender) } } //update self dispatch_async(dispatch_get_main_queue()) { self.timelineChatsDataArray += chats.timelinechatsData self.chatsDateArray += datesToString self.messageObjectArray += message.messageObjts self.messageSenderArray += message.messageSender self.tableView.reloadData() } } })