tobeiosdeveloper tobeiosdeveloper - 1 year ago 70
Swift Question

Swift - How to create Sort query as Descending on Firebase?

I'm using Firebase with Alamofire, AlamofireImage to cache my imageURL data on memory and upload ImageShack.

I stuck creating descending query tried to do and search but I couldn't find possible description for me. Here's my test ref_post on Firebase.

childByAutoId()

-- userUid

-- imageUrl

-- timestamp (I have created using this)

*Using NSDate().formattedISO8601 Is it best way or Can you advice me to handle it basically?

How Can I do descending query in Firbase IOS/Swift. Here's my viewDidLoad:

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()
}
})

Answer Source
self.posts = self.posts.reverse()

To save NSDate instances, I personally use timeIntervalSinceReferenceDate() which returns an NSTimeInterval (which is a Double), which you can then save in Firebase. When reading the data, you can obtain the original NSDate with init(timeIntervalSinceReferenceDate:).

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download