I am working on Chat kind of application. Where I am fetching full message list from server and saving it into array of custom entity NSObject class.
Here is my class.h :
import
@interface ChatMessage : NSObject
@property (nonatomic, retain) NSString *msg_text;
@property (nonatomic, retain) NSDate *msg_date;
@property (nonatomic, assign) int sender_id;
@property (nonatomic, assign) int receiver_id;
@property (nonatomic, retain) NSString *msg_status;
@end
Here is my class.m :
#import "ChatMessage.h"
@implementation ChatMessage
@synthesize msg_text, msg_date, msg_status, sender_id, receiver_id;
- (id) initWithCoder: (NSCoder *)coder
{
self = [[ChatMessage alloc] init];
if (self != nil)
{
self.msg_text = [coder decodeObjectForKey:@"msg_text"];
self.msg_date = [coder decodeObjectForKey:@"msg_date"];
self.msg_status = [coder decodeObjectForKey:@"msg_status"];
self.sender_id = [coder decodeIntForKey:@"sender_id"];
self.receiver_id = [coder decodeIntForKey:@"receiver_id"];
}
return self;
}
- (void)encodeWithCoder: (NSCoder *)coder
{
[coder encodeObject:msg_text forKey:@"msg_text"];
[coder encodeObject:msg_date forKey:@"msg_date"];
[coder encodeObject:msg_status forKey:@"msg_status"];
[coder encodeInt:sender_id forKey:@"sender_id"];
[coder encodeInt:receiver_id forKey:@"receiver_id"];
}
@end
I want to do sorting of an object of NSMutableArray with using "msg_date" property in my CellForRowAtIndexPath before displaying it into my chat list table view. I am getting date and time format as "2014-08-21 18:30:00" for each and every chat messages.
here is my code for sorting array of objects :
NSMutableArray *unsortedArray = [[NSMutableArray alloc] init];
//sorting array with date and time
for (int i=0; i<[self.arrayChatMessages count]; i++) {
ChatMessage *chat = [[ChatMessage alloc] init];
chat = [self.arrayChatMessages objectAtIndex:i];
[unsortedArray addObject:chat.msg_date];
}
NSLog(@"un sorted array is = %@", unsortedArray);
NSArray *sortedArray = [unsortedArray sortedArrayUsingComparator:^(id obj1, id obj2) {
return [obj2 compare:obj1];
}];
NSLog(@"sorted array is = %@", sortedArray);
It's sorting successfully. In my console i am getting :
un sorted array is = (
"2014-08-21 18:28:58",
"2014-08-21 18:27:41",
"2014-08-21 20:10:45",
"2014-08-21 18:30:45",
"2014-08-29 12:27:45"
)
sorted array is = (
"2014-08-29 12:27:45",
"2014-08-21 20:10:45",
"2014-08-21 18:30:45",
"2014-08-21 18:28:58",
"2014-08-21 18:27:41"
)
My problem is according to this sorted array, how can i sort array of objects i.e. self.arrayChatMessages.