2016-08-30 6 views
0

辞書のキーでテーブルビューをソートするときに問題があります。キーは基本的にタイムスタンプで、私は自分のテーブルの一番上にある最新の投稿を並べ替えようとしています。別のループ内にループがあるか、cellForRowAtIndexPathのソートが間違っているので、テーブルを再読み込みする必要があるかどうかわかりません。私はデータを見ていて、それは最初のループ(フィード内のアイテム用)によって今すぐソートされています。私はループ全体を終了させることはできませんし、辞書内の私のタイムスタンプキーですべてをソートすることはできません。どんな助けでも大歓迎です。辞書のタイムスタンプで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" 
+0

タイムスタンプ文字列はどのように見えますか? –

+0

解決策ではありませんが、 'tableView.reloadData()'を呼び出す前に投稿を並べ替えるべきです。そうすれば、配列は 'cellForRowAtIndexPath'が呼ばれるたびにソートされません。 – Carter

+0

@JosephQuigley私のタイムスタンプはミリ秒です。私はfirebase.database.ServerValue.TIMESTAMPを使用します。 – kelsheikh

答えて

0

あなたの投稿は、あなたが何を割り当てていないようにしかし、それは見えます、あなたがそれらをに期待する方法をソートする必要があります細胞に

cell.postTextLabelはあなたのポストオブジェクトからテキストが含まれていますUILabelある
cell.postTextLabel.text = post["postStringHere"] 

:ような何かを試してみてください。

+0

おそらく、 'cell.configureCell(post)'呼び出しが行うものです。 OPは、彼の投稿を編集して、そのコードとその 'Post'オブジェクトの構造を提供する必要があります。 –

+0

私が尋ねたときに構成セルが問題のリビジョンに入っていないのですが、そのボディが本当に役に立ちそうだとわかりました –

+0

ああlordy。それは今はうまくいかないでしょうか? –

関連する問題