2016-07-26 45 views
-2

我有以下NSMutableArray排序NSMutableArray裏與鍵值

我想升序

排序按字母順序名稱鍵根據DOBDate數組元素進行排序。

myarraytosort":[ 
    {「DOBDate":"Jul 18, 1987」,」Name」:」Aman Singh」}, 
    {「DOBDate」:」Dec 18, 2000」,」Name」:」Dman Kumar」}, 
    {「DOBDate」:」June 18, 1990」,」Name」:」Cman Singh」}, 
    nil 
] 

代碼我嘗試,但沒有工作

爲DOBDate

NSSortDescriptor *dateDescriptor = [NSSortDescriptor 
              sortDescriptorWithKey:@"DOBDate" 
              ascending:NO]; 
     NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor]; 
     NSArray *sortedEventArray = [myarraytosort 
            sortedArrayUsingDescriptors:sortDescriptors]; 
     NSLog(@"sortedEventArray == %@", sortedEventArray); 

對於字母

NSSortDescriptor *dateDescriptor = [NSSortDescriptor 
              sortDescriptorWithKey:@"Name" 
              ascending:YES]; 
     NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor]; 
     NSArray *sortedEventArray = [myarraytosort 
            sortedArrayUsingDescriptors:sortDescriptors]; 
     NSLog(@"sortedEventArray == %@", sortedEventArray); 
+0

入住這http://stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it?rq=1 –

+4

這將是更好地使用' NSDate'而不是'NSString'對象來表示日期。否則,您必須使用'sortUsingComparator:'和一個自定義比較器(使用'NSDateFormatter')。 – Larme

回答

1

DOBDate鍵包含字符串甲日期,所以你需要理清你的約會使用Comparator就像這樣

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"MMM dd, yyyy"]; 
NSArray *sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *obj1, NSDictionary *obj2) { 
    NSDate *d1 = [df dateFromString:(NSString*) [obj1 valueForKey:@"DOBDate"]]; 
    NSDate *d2 = [df dateFromString:(NSString*) [obj2 valueForKey:@"DOBDate"]]; 
    return [d1 compare: d2]; 
}]; 
+0

return [d1 compare:d2];很好的工作 – iphonemaclover

+0

歡迎隊友快樂編碼:) –

+0

我建議把'df'放在'NSComparisonResult()'之外,因爲'NSDateFormatter'的alloc/init是耗費時間(和CPU),它總是一樣的。 – Larme