2016-03-30 10 views
0

私はImageBlockをアップロードし、メモリ上に私のimageURLデータをキャッシュするためにAlamofire、AlamofireImageと共にFirebaseを使用しています。Swift - Firebaseの降順でソートクエリを作成するには?

降順のクエリを作成しようとしましたが、検索しようとしましたが、私の説明が見つかりませんでした。ここで私のテストはref_post Firebaseにあります。

childByAutoId()

- userUid

- IMAGEURL

- 。NSDateを(使用してタイムスタンプ(私はthisを使用して作成した)

*)formattedISO8601それは最善の方法ですか、それとも基本的にそれを扱うようアドバイスできますか?

どのようにFirbase IOS/Swiftで降順クエリを実行できますか。

let query = DataService.ds.REF_POSTS.queryOrderedByChild("timestamp") 

    query.observeEventType(.Value, withBlock: { snapshot in 

     if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] { 
      self.posts = [] 
      for snap in snapshots { 
       if let postDict = snap.value as? Dictionary<String, AnyObject> { 

        print(postDict) 

        let post = Post(imageUrl: postDict["imageUrl"]! as? String, username: DataService.ds.REF_USERS.authData.uid) 

        self.posts.append(post) 
       } 
      } 

      self.tableView.reloadData() 
     } 
    }) 

答えて

4
self.posts = self.posts.reverse() 

が、私は個人的に返すtimeIntervalSinceReferenceDate()を使用NSDateインスタンスを保存するにはNSTimeIntervalあなたがFirebaseに保存することができ、(Doubleである):ここに私ののviewDidLoadです。データを読むときは、オリジナルNSDateinit(timeIntervalSinceReferenceDate:)で取得できます。

+2

ページめくりの対象外 – KutakMir

+0

@Tim Firebaseのタイムスタンプ値をDoubleまたはStringとして保存する必要がありますか? observeEventType(.Value、withBlock:{snapshot in'。)タイムスタンプ(Double型の)がFirebaseに文字列として保存されている場合、どのようにfirebaseがデータをどのように順序付けするのか不思議に思っていました。取得時にスナップショットの要素が順番に並べられますか? – bibscy

+0

@bibscyタイムスタンプを整数として格納していると思いますが、詳細は覚えていません。 –

1

代わりの

self.posts.append(post) 

使用

self.posts.insert(post, at: 0) 

これはあなたのリストの先頭に項目を追加し、その結果、降順にあなたがfirebaseから入手昇順が逆になります。

関連する問題