繁体   English   中英

在NSArray中对对象进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM