[英]Sorting an NSArray of Objects WRT the objects contained in NSSet in those objects
[英]Sorting Objects in NSArray
我有一个NSArray,里面有3个对象。 每个对象由5个值组成。 如何在对象中按日期排序?
result: (
gg,
"2012-10-28 01:34:00 +0000",
"Church Bells",
"pin_red",
1
)(
iu,
"2008-09-22 17:32:00 +0000",
"Birthday Song",
"pin_red",
1
)(
"my birthday woo hoo",
"2012-09-04 19:27:00 +0000",
"Birthday Song",
"pin_blue",
1
)
我正在寻找的结果 - Sorted Array应该是这样的。
(
iu,
"2008-09-22 17:32:00 +0000",
"Birthday Song",
"pin_red",
1
)
(
"my birthday woo hoo",
"2012-09-04 19:27:00 +0000",
"Birthday Song",
"pin_blue",
1
)
(
gg,
"2012-10-28 01:34:00 +0000",
"Church Bells",
"pin_red",
1
)
我从我的nsdictionary对象获取此数组。
dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:stringsPlistPath];
stringsMutableArray = [[NSMutableArray alloc] initWithObjects:nil];
for (id key in dictionary)
{
[stringsMutableArray addObject:[dictionary objectForKey:key]];
}
尝试这个:
NSArray *sortedArray = [result sortedArrayUsingComparator: ^(id obj1, id obj2) {
NSArray *arr1 = (NSArray *)obj1;
NSArray *arr2 = (NSArray *)obj2;
NSDate *date1 = arr1[1];
NSDate *date2 = arr2[1];
return [date1 compare:date2];
}];
此代码假定您实际上有一个数组数组,并且日期是NSDate对象始终在内部数组中的索引1处。 如果按照您想要的相反顺序排序,请将两个日期交换为日期比较。
这是一个解决您问题的类似问题: 对日期字符串或对象进行NSArray排序
我将粘贴以下链接的答案:
将日期作为NSDate对象存储在NS(Mutable)数组中,然后使用[
-[NSArray sortedArrayUsingSelector:
] [1]或[-[NSMutableArray sortUsingSelector:]
] [1]并传递@selector(compare:)
作为参数。 [-[NSDate compare:]
] [2]方法将按升序为您排序日期。 这比创建NSSortDescriptor简单,并且比编写自己的比较函数简单得多。 (NSDate对象知道如何将自己相互比较,至少与我们希望使用自定义代码一样有效。)[1]: http : //developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/sortUsingSelector :[2]: http: //developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/compare :
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.