我有一个包含3个NSArrays的NSDictionary,
- posts
- comments
- likes.
在每个数组中都是一致的NSObject子类:
- Post
- Comment
- Like
通常,我只是将这三个数组中的所有对象放入一个数组中,并使用它们都包含的相同变量进行比较,但在这种情况下,Posts
具有变量dateOfUpload
和{ {1}}和Like
具有相同的变量date。
如何使用变量Comment
和date
比较这三个数组中的对象,以降序日期创建所有对象的一个大数组?
答案 0 :(得分:2)
我会让它们全部实现方法如:
-(NSComparsionResult) compareByDate : (NSObject *) obj;
当然,您需要在每个班级以不同的方式实现这一点。 然后从所有树阵列中创建一个大数组并调用
[myArray sortUsingSelector:@selector(compareByDate:)];
答案 1 :(得分:1)
另一种方法是将所有对象添加到一个大数组中,并使用块进行排序,如下所示:
// Create the array with all the objects
NSMutableArray *stuff = [NSMutableArray arrayWithArray:posts.allValues];
[stuff addObjectsFromArray:comments.allValues];
[stuff addObjectsFromArray:likes.allValues];
// Sort it by using a block
NSArray *sortedStuff = [stuff sortedArrayUsingComparator:^(id obj1, id obj2) {
NSDate *date1 = [obj1 respondsToSelector:@selector(date)]? [obj1 date] : [obj1 dateOfUpload];
NSDate *date2 = [obj2 respondsToSelector:@selector(date)]? [obj2 date] : [obj2 dateOfUpload];
return [date2 compare:date1]; // Objects are reversed to get descending order
}];