我在排序字典中的某个键时遇到了问题。关键是基本上是一个时间戳,我正在尝试排序我桌子顶部的最新帖子。我不知道是否必须重新加载表格,因为我在另一个循环内有一个循环,或者如果我在cellForRowAtIndexPath中的排序不正确。我看到数据,并且正在通过第一个循环(对于Feed中的项目)进行排序。我无法完成整个循环,然后按字典中的时间戳键排序。任何帮助是极大的赞赏。在字典中对时间戳进行排序TableView
var posts = [Post]()
func feedPosts(){
for items in feed{
let feedId = items["id"] as! String
ref.queryOrderedByChild("myFeed").queryEqualToValue(“\(feedId)”).observeEventType(.Value, withBlock: { snapshot in
if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshot {
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, postData: postDict)
self.posts.insert(post, atIndex: 0)
}
}
}
self.tableView.reloadData()
})
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let post = posts.sort({$0.postedDate > $1.postedDate})[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("PostCell") as? FeedPostCell
cell.configureCell(post)
return cell
}
恢复单元
class FeedPostCell: UITableViewCell {
@IBOutlet var feedTxt: UITextView!
var post: Post!
func configureCell(post: Post, img: UIImage? = nil) {
self.post = post
self.feedTxt.text = post.feedTxt
if img != nil {
self.postImg.image = img
}
}
}
数据结构
-posts
- postKey
- myFeed : "123"
- timestamp: 1472596316060
- feedTxt: "Here is my feed text"
你的时间戳字符串是什么样的? –
不是一个解决方案,但是你应该在调用'tableView.reloadData()'之前对你的帖子进行排序。这样,每次调用'cellForRowAtIndexPath'时,数组都不会被排序。 – Carter
@JosephQuigley我的时间戳以毫秒为单位。我使用firebase.database.ServerValue.TIMESTAMP – kelsheikh