我有一個數組包含NSDictionary對象,一個關鍵是時間,其中包含像「2013-10-09」時間字符串格式,我需要排序數組的時間鍵,但我不知道如何用該格式對NSString進行排序。如何排序字符串格式,如「2013-10-09」
2
A
回答
0
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSMutableArray *dates = [NSMutableArray arrayWithCapacity:datesAry.count];
for (NSString *dateString in dates)
{
NSDate *date = [dateFormatter dateFromString:timeString];
[dates addObject:date];
}
[dates sortUsingSelector:@selector(compare:)];
NSMutableArray *sortedDates= [NSMutableArray arrayWithCapacity:dates.count];
for (NSDate *date in dates)
{
NSString *dateString = [dateFormatter stringFromDate:date];
[sortedDates addObject: dateString];
}
+2
你不應該使用YYYY - 「這個例子有兩點需要注意: 它使用yyyy指定年份組件,常見的錯誤是使用YYYY。 yyyy指定日曆年,而YYYY指定ISO年份周曆中使用的年份(「年份周」)。在大多數情況下,yyyy和YYYY產生相同的數字,但它們可能不同。日曆年「。 – adnako
+0
@cirroz很好的解釋謝謝:) – Rajneesh071
0
- (void)testSortTimeAsString {
NSDictionary *dict1 = @{@"key" : @"none", @"Time" : @"2013-10-01", @"optional" : @"---"};
NSDictionary *dict2 = @{@"key" : @"none", @"Time" : @"2012-12-21", @"optional" : @"---"};
NSDictionary *dict3 = @{@"key" : @"none", @"Time" : @"2013-02-10", @"optional" : @"---"};
NSDictionary *dict4 = @{@"key" : @"none", @"Time" : @"2013-11-25", @"optional" : @"---"};
NSDictionary *dict5 = @{@"key" : @"none", @"Time" : @"2013-06-15", @"optional" : @"---"};
NSArray *array = @[dict1, dict2, dict3, dict4, dict5];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSArray *sorted = [array sortedArrayWithOptions:0 usingComparator:^(id obj1, id obj2) {
NSString *stringDate1 = obj1[@"Time"];
NSString *stringDate2 = obj2[@"Time"];
NSDate *date1 = [dateFormatter dateFromString:stringDate1];
NSDate *date2 = [dateFormatter dateFromString:stringDate2];
NSComparisonResult result = [date1 compare:date2];
return result;
}];
NSLog(@"Sorted array: \n%@", sorted);
}
0
與該格式排序日期有相同的結果,他們的排序爲字符串。 所以:
NSArray *unordered = @[
@{ @"Time": @"2001-01-01", @"Place" : @"Somewhere" },
@{ @"Time": @"1999-01-01", @"Place" : @"Elsewhere" },
@{ @"Time": @"1999-02-01", @"Place" : @"Nowhere" }
];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Time" ascending:YES selector:@selector(compare:)];
NSArray *ordered = [unordered sortedArrayUsingDescriptors:@[ sortDescriptor ]];
會給你排序的數組。
相關問題
- 1. 如何在Android中將表格格式的字符串排序
- 2. 如何排序在java中的字符串格式的日期?
- 3. 如何以升序排列字符串格式日期?
- 4. 如何字符串格式
- 5. 如何解析字符串格式,如[***] ***?
- 6. 如何格式化字符串,如#。#。#。#
- 7. iphone +如何排序數量字符串
- 8. 如何排序字符串的子值?
- 9. 字符串是如何排序的?
- 10. 如何排序字符串列表?
- 11. 如何排序字符串數組
- 12. 如何處理排序「字符串」?
- 13. 如何排序的字符串列表?
- 14. Python的 - 如何排序字符串
- 15. 如何在vb中排序字符串
- 16. mysql如何排序字符串?
- 17. 如何排序字符串的日期?
- 18. 如何排序一個observablecollection(字符串)
- 19. 如何按值排序字典並返回格式化字符串列表?
- 20. 如何按字母順序排序字符串的字符?
- 21. 如何將字符串排序爲字符串arr
- 22. 如何在python中安排多個字符串格式參數
- 23. 如何在JSON字符串顯示陣列格式排列
- 24. 如何重新格式化字符串以排除前導零?
- 25. SQL:如何排列日期格式的字符串(MONTH/DD/YY)?
- 26. 如何排除字符串
- 27. 排序字符串分隔符,如UNIX
- 28. 如何排序由空格字符串中的
- 29. 如何格式化字符串
- 30. 如何評價Excel格式字符串
http://stackoverflow.com/questions/16208586/ios-sort-an-array-of-time-strings和http://stackoverflow.com/questions/1132806/sort-nsarray-of-date-strings -or-objects/1134126 – iPatel
就是你的問題解決了 – Rajneesh071