2016-07-05 32 views
0

現在、firebaseからのテーブルビューソートに関するいくつかの問題が発生しています。私が達成しようとしているのは、それぞれが値(価格)を含む5つの異なる価格ティアをテーブルビューにリストすることです(tier1、tier5、tier12、tier24、tierPermanent)。スウィフト/ファイアベースのソート

しかし、これらの値をデータベースからフェッチしている間に、これらの値をテキスト(時間)と価格ティアを含むテーブルビューで表示することはむしろ困難です。私が今やっていることは、observeEventTypeを使ってすべての値を表示し、各値を辞書に格納していることです。その後、それを[[String:String]型の辞書の配列に追加します。

私が苦労しているのは、これを降順でテーブルビューに表示することです。これらの5つの値はすべてオプションであるため、値が含まれていない可能性があることに注意してください。最初の行には値を表示せず、2番目の行には空白のセルを、3番目の行には新しい値 - 値に比べて降順で表示したい。 (永続的な値は、値が含まれている場合は常に先頭に、そうでない場合はtier24が上に、そうでない場合は12になります。各セルについて。

cell.nameLabel.text = cell [indexPath.row] ["tier .."]で一意の値にアクセスすることはわかっていますか? String - 問題は、何らかの並べ替えが必要で、データが2回表示されないようにすることです。 (キーと値の両方を指定した順序 - キーと値の両方を同じセルに表示します)。

私はこれにどのようにアプローチするかに関するアイデアはありますか?

ありがとうございます。

+0

コードを記述する代わりに、[問題を再現する最小限の完全なコード](http://stackoverflow.com/help/mcve)を投稿してください。 –

答えて

1

あり、完全に問題に対処するための十分なデータが本当にないのですが、どのようにこのことについて:

Firebase構造:

tiers 
    -Y0998uas9j 
    tier_type: tier_24 
    time: 20160705130100 
    sort_order: 1 
    -Ykja9s9js9 
    tier_type: tier_05 
    time: 20160705130300 
    sort_order: 3 
    -Yukl9jh8sj 
    tier_type: tier_permanent 
    time: 20160705130500 
    sort_order: 0 

ティアは、正しい順序でそれらを保つためにソート順を持っています。

tier_permanent = 0 
tier_24 = 1 
tier_12 = 2 
tier_05 = 3 
tier_01 = 4 

とでそれらを読んで、並べ替え、降順を保つためにいくつかのコード:

var myArray = [[String:String]]() 
    let tiersRef = self.myRootRef.child("tiers") 
    tiersRef.observeSingleEventOfType(.Value, withBlock: { snapshot in 

     for child in snapshot.children { 
      var dict = [String: String]() 
      dict["fbKey"] = child.key as String 
      dict["tier_type"] = child.value["tier_type"] as? String 
      dict["timestam"] = child.value["time"] as? String 
      dict["sort_order"] = child.value["sort_order"] as? String 
      myArray.append(dict) 
     } 

     myArray.sortInPlace({$0["sort_order"] < $1["sort_order"]}) 

     self.mySuperTableView.reloadData() 

     for dict in myArray { //meh, print them so show they are sorted 
      print(dict) 
     } 
    }) 

このアドレス:彼らは降順、ソート、およびタイヤがデータベースに存在しない場合、彼らは意志維持明らかに読み取られません。

問題はありますが、階層名と値(時間?)の間の相関関係は疑問です。もう一度情報が提示されたら更新します。

+0

あなたの非常によく記述された答えをありがとう - しかし、私は5つの別個のテーブルビューのセルクラスを作成することで私の問題を解決しました。しかし、もう一度、ありがとう! – askaale