【发布时间】:2014-02-22 03:07:52
【问题描述】:
我一直在努力寻找一种简单的方法来对包含 NSDictionaries 的 NSMutableArray 进行排序。每个 NSDictionary 都有一个名为“Date”的键,其中包含一个日期的 NSString(例如:10/15/2014)。
我要做的是根据这些字符串按升序对数组进行排序。
我试过这个没有运气:
NSComparisonResult dateSort(NSString *s1, NSString *s2, void *context) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yy"];
NSDate *d1 = [formatter dateFromString:s1];
NSDate *d2 = [formatter dateFromString:s2];
return [d1 compare:d2]; // ascending order
return [d2 compare:d1]; // descending order
}
我也试过这个,但没有运气:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories=[stories sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
recent = [stories copy];
每种方式都会导致崩溃,我认为这是因为它是 NSString 而不是 NSDate,但我不知道如何做到这一点。
谁能告诉我正确的方法来完成这个?
这就是我调用第一块代码的方式:
theDictionaries = [[theDictionaries sortedArrayUsingFunction:dateSort context:nil] mutableCopy];
【问题讨论】:
-
崩溃在哪一行,错误信息是什么?
-
第一个代码块在 NSDate *d1 = [formatter dateFromString:s1];崩溃是:NSDictionaryI length]: unrecognized selector sent to instance
-
听起来您正在将字典传递给字符串参数 (s1)。显示整个方法的代码。 s1 和 s2 是从哪里来的?
-
我更新了问题的底部以包括我如何调用该方法。除此之外,这就是我对方法进行排序的全部内容。有什么我没看到的吗?
标签: ios sorting date nsarray nsdictionary