add messagesInConversation for ordered messages

This commit is contained in:
nixzhu
2015-03-26 12:09:30 +08:00
parent 41318499ac
commit 703288dbd0
3 changed files with 14 additions and 5 deletions
+5
View File
@@ -185,4 +185,9 @@ func tryGetOrCreateMe() -> User? {
return nil
}
func messagesInConversation(conversation: Conversation) -> RLMResults {
let predicate = NSPredicate(format: "conversation = %@", conversation)
let messages = Message.objectsWithPredicate(predicate).sortedResultsUsingProperty("createdAt", ascending: true)
return messages
}
@@ -7,11 +7,15 @@
//
import UIKit
import Realm
class ConversationViewController: UIViewController {
var conversation: Conversation!
lazy var messages: RLMResults = {
return messagesInConversation(self.conversation)
}()
@IBOutlet weak var conversationCollectionView: UICollectionView!
@@ -174,7 +178,7 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let message = conversation.messages[indexPath.row]
let message = messages.objectAtIndex(UInt(indexPath.row)) as! Message
if let sender = message.fromFriend {
if sender.friendState != UserFriendState.Me.rawValue {
@@ -220,7 +224,7 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi
// TODO: Cell
// TODO: 使
let message = conversation.messages[indexPath.row]
let message = messages.objectAtIndex(UInt(indexPath.row)) as! Message
let rect = message.textContent.boundingRectWithSize(CGSize(width: messageTextLabelMaxWidth, height: CGFloat(FLT_MAX)), options: .UsesLineFragmentOrigin | .UsesFontLeading, attributes: messageTextAttributes, context: nil)
@@ -42,7 +42,7 @@ class ConversationCell: UITableViewCell {
}
}
if let latestMessage = conversation.messages.last {
if let latestMessage = messagesInConversation(conversation).lastObject() as? Message {
self.chatLabel.text = latestMessage.textContent
self.timeAgoLabel.text = "\(latestMessage.createdAt)"
} else {
@@ -59,7 +59,7 @@ class ConversationCell: UITableViewCell {
self.nameLabel.text = ""
}
if let latestMessage = conversation.messages.last {
if let latestMessage = messagesInConversation(conversation).lastObject() as? Message {
if let messageSender = latestMessage.fromFriend {
AvatarCache.sharedInstance.roundAvatarOfUser(messageSender, withRadius: radius) { roundImage in
dispatch_async(dispatch_get_main_queue()) {