2014-10-10 98 views
0

我想這取決於在陣列self.contacts使用排序子數組鍵值對

守則FIRST_NAME用來陣列

-(void)Sort 
{ 
    NSSortDescriptor *sdName = [[NSSortDescriptor alloc] initWithKey:@"first_name" ascending:YES]; 
    self.contacts = [NSMutableArray arrayWithArray:[self.contacts sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sdName, nil]]]; 
} 
排序排序我的主陣列的主要的NSArray

邁德特

self.contacts = (
     { 
      contact = { 
       "first_name" = "Test R"; 
      }; 

      "last_met" = (
       { 
        "last_met_date" = "2014-10-09"; 
       } 
      ); 
     }, 
     { 
      contact = { 
       "first_name" = "Test K"; 
      }; 

      "last_met" = (
       { 
        "last_met_date" = "2014-10-09"; 

       } 
      ); 
     } 
    ) 
+0

請添加更多信息。你的問題非常模糊。 – TMob 2014-10-10 08:55:43

回答

1

嘗試用這種描述:

descriptor = [[NSSortDescriptor alloc] initWithKey:@"contact.first_name" 
             ascending:YES]; 

參數key實際上是一個關鍵路徑,並NSDictionary是KV兼容。你可以寫這樣的東西:[contacts[0] valueForKeyPath:@"contact.first_name"]

1

看看你的代碼,它看起來像你想排序聯繫人數組,這是一個字典數組,我在這裏提供的解決方案是這種情況。

你可以這樣說:

NSArray *sortedContactsArray = [self.contacts sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    NSString *first_name1 = [obj1 valueForKeyPath:@"contact.first_name"]; 
    NSString *first_name2 = [obj2 valueForKeyPath:@"contact.first_name"]; 

    return [first_name1 compare:first_name2]; 
}]; 

注意,這可能是不安全的,優化的,但這些都只是做到這一點的方法之一。