我在我的项目中使用 NSFetchedResultController 。以下是我想要实现的方案。
对于Ex:
考虑我有C1,C2,C3,C4,C5,C6作为我的联系人,其中C2和C6有LastMessageDate存在。因此,分类的联系人应该是C2,C6,C1,C3,C4,C5
答案 0 :(得分:1)
首先使用两个排序描述符按字母顺序对所有联系人进行排序,然后根据最后一个消息日期过滤。请参阅以下代码 -
NSSortDescriptor *contactName = [[NSSortDescriptor alloc]
initWithKey: @"ContactName" ascending: YES];
NSSortDescriptor *lastMessageDate = [[NSSortDescriptor alloc]
initWithKey: @"LastMessageDate" ascending: YES];
NSArray *sortedArray = [contactArray sortedArrayUsingDescriptors: [NSArray arrayWithObjects: contactName, lastMessageDate, nil]];
答案 1 :(得分:0)
您可以将LastMessageDate
的默认日期设置为distantFuture
或distantPast
吗?
现在,当您按日期排序时,这些项目将是第一个或最后一个,并且将使用第二个排序描述符(因此它们将按字母顺序排序)。
并且您的其他代码会检查日期是什么,并且当它等于distantFuture
或distantPast
时可以使用(可能是自定义访问器方法)。