У меня есть TableView подклассом как PFQueryTableViewController, и я хочу знать, как я могу получить список пользователей из Parse. У меня возникают проблемы с получением данных пользователей и их отображением с помощью моего кода. Есть ли что-то, что мне нужно изменить в моем запросеForTable, изменить синтаксический анализ или изменить код?Swift-Создание страницы профиля, например, Twitter или Instagram через PFQueryTableViewController
Вот мой ProfileViewController:
import UIKit
import Parse
import ParseUI
class ProfileViewController: PFQueryTableViewController{
var profilePosts:NSMutableArray! = NSMutableArray()
override init(style: UITableViewStyle, className: String!) {
super.init(style: style, className: className)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.parseClassName = "Test"
self.textKey = "postMessage"
self.pullToRefreshEnabled = true
self.objectsPerPage = 200
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func queryForTable() -> PFQuery {
let query = PFQuery(className: "Test")
query.whereKey("username", equalTo: PFUser.currentUser()!)
query.limit = 200;
return query
}
// MARK: - Table view data source
override func objectAtIndexPath(indexPath: NSIndexPath!) -> PFObject? {
var obj : PFObject? = nil
if(indexPath.row < self.objects!.count){
obj = self.objects![indexPath.row] as? PFObject
}
return obj
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return profilePosts.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath?, object:PFObject!) -> PFTableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("PCell", forIndexPath: indexPath!) as! ProfileCell
if let profilePost : PFObject = self.profilePosts.objectAtIndex(indexPath!.row) as! PFObject {
cell.NameProfile.text = object["account"] as? String
cell.messageProfile.text = object["postMessage"] as? String
let dateUpdated = object.createdAt! as NSDate
let dateFormat = NSDateFormatter()
dateFormat.dateFormat = "MMM d, h:mm a"
cell.timeProfile.text = NSString(format: "%@", dateFormat.stringFromDate(dateUpdated)) as String
cell.messageProfile.numberOfLines = 0
let likeScore = object[("count")] as! Int
cell.likeScoreProfile.text = "\(likeScore)"
let replyscore = object["replies"] as! Int
cell.replyScoreProfile.text = "\(replyscore) replies"
cell.messageProfile.text = profilePost.objectForKey("postMessage") as? String
if let profilePic = object["profilePhoto"] as? PFFile {
let imageView = cell.profilePhoto as PFImageView
imageView.image = UIImage(named: "profileImg")
imageView.file = profilePic
imageView.loadInBackground(nil)
}
return cell
}
Данные текущего пользователя не отображаются. Как это извлекает текущие объекты пользователей из объекта? – Cooni
Вы используете оба объекта, хранящиеся в 'PFTableViewController', который представляет объекты, полученные из Parse, но вы также используете' profilePosts', который представляет собой массив, который, по вашему мнению, должен использоваться для представления ваших объектов Parse, но что вы никогда никому не назначаете. Таким образом, ваши варианты - либо ** только ** использовать свойство 'objects', которое у вас уже есть, либо изменить код для использования только' profilePosts', который вам придется назначать в 'objectsDidLoad' – pbush25
@Cooni также обновил мои ответьте, чтобы дать вам лучшее представление о том, о чем я говорил. – pbush25