如何根据在iphone中保存为“key for object”的Date对可变数组进行排序?

时间:2010-02-19 18:11:46

标签: iphone cocoa cocoa-touch sorting nsmutablearray

我是iphone开发的新手。我最近有一个可变数组,其中诸如标题,日期,网址和摘要等值被存储为“密钥对象”。密钥是myurl,mudate,mytitle,mysummary.I want在引用日期时对该可变数组进行排序,并根据该值打印所有值。如何实现?请帮助我。谢谢。

            [item setObject:currentTitle forKey:@"title"];
            [item setObject:currentLink forKey:@"link"];
            [item setObject:currentSummary forKey:@"description"];
            [item setObject:currentDate forKey:@"pubDate"];//
            [item setObject:currentImage forKey:@"imagePath"];

            [recent addObject:[item copy]];

所有都是xml解析的内容。

3 个答案:

答案 0 :(得分:7)

所以我猜你有一系列字典。有几种方法可以做到这一点,但我建议使用NSSortDescriptor。你会想做这样的事情:

//myArray is the name of the your array
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"mydate" ascending:YES]; // If you want newest at the top, pass NO instead.
[myArray sortUsingDescriptor:descriptor]; // This will modify myArray. To return a new array and leave the original untouched, use -sortedArrayUsingDescriptor:.
[descriptor release];
NSLog(@"%@", myArray); // Print.

如果您已将日期作为NSDate个对象,则可以正常使用。如果没有,您将需要循环遍历数组并预先解析日期,或使用initWithKey:ascending:selector: NSSortDescriptor方法,这允许您定义自定义比较方法。

答案 1 :(得分:0)

答案 2 :(得分:0)

Swift 3.0

 let descriptor = NSSortDescriptor(key: "Your array KEY", ascending: false)

 yourArray.sort(using: [descriptor])

升序排序使其成为真正的"否则就把它弄错了#34;