个人理解及总结
用到方法
// 这里的array是我们要排序的数组
NSArray *sort = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
<#code#>
}];
这里obj1是数组array中的第一个对象;
obj2是数组array中的第二个对象;
我们想根据对象中的某个对象排序, 比较
if (obj1.对象 > obj2.对象)
{
返回正序
}
else
{
返回倒叙
}
下面是我根据环信SDK写的一个app, 其聊天列表需要按照时间戳排序, 新发的消息要排到最上面, 代码如下:
-(void)getData
{
NSArray *chatListArr = [[EaseMob sharedInstance].chatManager loadAllConversationsFromDatabaseWithAppend2Chat:YES];
[self.dataSourceArr removeAllObjects];
[self.dataSourceArr addObjectsFromArray:[self compareDataSource:chatListArr]];
}
-(NSMutableArray *)compareDataSource:(NSArray *)array
{
NSMutableArray *result = nil;
NSArray *sort = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
EMMessage *message1 = [obj1 latestMessage];
EMMessage *message2 = [obj2 latestMessage];
if (message1.timestamp > message2.timestamp)
{
return NSOrderedAscending;
}
else
{
return NSOrderedDescending;
}
}];
result = [NSMutableArray arrayWithArray:sort];
return result;
}