2013-02-22 33 views
22

Tôi có một mảng chứa các đối tượng từ điển. Trong mỗi từ điển, khóa là phổ biến. Bây giờ tôi muốn nhận được tất cả các giá trị của khóa đó. Tôi đã có những giá trị này với iteration, nhưng tôi đang tìm kiếm một số cách thẳng về phía trước hoặc một phương pháp mặc định mà thực hiện công việc này.Làm thế nào tôi có thể nhận được tất cả các giá trị cho khóa cụ thể từ mỗi NSDictionary trong một NSArray?

Bạn có thể vui lòng giúp tôi lấy một phương pháp mặc định phục vụ mục đích không? Cảm ơn.

Cấu trúc dữ liệu là như thế này:

<array> 
    <dict> 
     <key>Match</key> 
     <string>Football</string> 
     <key>Stadium</key> 
     <string>XXXXX</string> 
    </dict> 
    <dict> 
     <key>Match</key> 
     <string>HOCKY</string> 
     <key>Stadium</key> 
     <string>XXXXX</string> 
    </dict> 
</array> 

tôi đang làm điều này bây giờ:

NSMutableArray * matches = [[NSMutableArray alloc] init]; 
     for (int i = 0; i< myArray.count; i++){ 
      [matches insertObject:[[myArray objectAtIndex:i] objectForKey:@"Match"] atIndex:i]; 
     } 
     [matchDataArray addObjectsFromArray:matches]; 

Nó mang lại cho tôi câu trả lời đúng. Nhưng tôi không muốn làm việc lặp lại này. Tôi muốn một phương pháp mà sẽ trả lại cho tôi tất cả các giá trị của "trận đấu" chìa khóa từ tất cả các chỉ mục của mảng và lưu trong mảng khác cùng một lúc. mảng mới được tạo sẽ chỉ có các giá trị của Khóa khớp từ tất cả các chỉ mục của mảng.

Điều này có thể không?

Trả lời

65

Có một trick gọn gàng với giá trị khóa mã hóa nào đó:

NSArray *matches = [myArray valueForKey: @"Match"]; 

Dưới đây là một ví dụ trong hành động:

NSArray *anArray = @[ 
         @{@"aWord" : @"I"}, 
         @{@"aWord" : @"have"}, 
         @{@"aWord" : @"an"}, 
         @{@"aWord" : @"array"}, 
         @{@"aWord" : @"which"}, 
         @{@"aWord" : @"contains"}, 
         @{@"aWord" : @"dictionary"}, 
         @{@"aWord" : @"objects."}, 
         @{@"aWord" : @"Etc."}, 
         ]; 

NSArray *aWordArray = [anArray valueForKey:@"aWord"]; 

Sau khi dòng cuối cùng này, aWordArray sẽ chứa các từ trong theo thứ tự như trong các từ điển ban đầu.

+1

Cảm ơn rất nhiều. Nó hoạt động. Nó làm cho cuộc sống của tôi dễ dàng. Cảm ơn một lần nữa. :) – hgpl

+0

là có cách nào để lọc dựa trên giá trị –

+0

Boosa - Sử dụng biến vị ngữ và trả về một mảng được lọc - – PruitIgoe

Các vấn đề liên quan