2012-08-27 28 views
9

Tôi có một vòng lặp for mà đi qua một loạt các từ điển trong một mảng.Thêm vào các mục nhập NSDictionary vào NSMutableDictionary

Làm cách nào tôi có thể hợp nhất tất cả các mục nhập từ điển khi nó đi qua vòng lặp vào một NSMutableDictionary?

Tôi đã thử addEntriesFromDictionary nhưng không hoạt động. Cảm ơn bạn đã giúp đỡ.

for (int i=0; i<sections.count; i++){ 

    formElements = [[sections objectAtIndex:i]objectForKey:@"Dictionary"];   
} 
+0

Bạn muốn làm gì? Có lẽ tôi không hiểu bạn. –

Trả lời

10
NSMutableDictionary * mutableDict = [NSMutableDictionary dictionary]; 

for (NSDictionary * formElements in sections) 
{ 
    [mutableDict addEntriesFromDictionary:formElements]; 
} 

Điều này sẽ hoạt động nếu Chính xác là chúng không chia sẻ bất kỳ khóa nào.

+0

Ok, tuyệt vời. Tôi sẽ thử nó và cho bạn biết – user984248

12

bạn có thể thêm đối tượng từ điển như dưới đây.

NSMutableDictionary *mDict=[NSMutableDictionary dictionary]; 
    [mDict addEntriesFromDictionary:DictObj]; 
+0

Điều gì đang xảy ra bây giờ là mỗi khi tôi đi qua vòng lặp, từ điển cuối cùng thay thế một từ trước khi nó thay vì thêm vào nó. Vì vậy, tôi có 5 mục trong từ điển đầu tiên và 2 mục trong từ điển thứ hai. Cuối cùng, tôi muốn kết hợp chúng để có tổng số 7 mục. – user984248

+0

@ user984248 Có bởi vì các phím thay thế lẫn nhau. Bạn có lẽ nên sử dụng một mảng cho điều này và chỉ cần làm [mảng addObject: formElements] –

+0

Tôi có thể làm điều này và có một từ điển là kết quả cuối cùng? Tôi có tất cả các mã của tôi được cấu hình để đọc các mục từ một từ điển. – user984248

0

Bạn có thể liệt kê từ điển của mình bằng -objectĐánh số hoặc các phương thức khác của NSDictionary.

Vì vậy, trong vòng lặp của bạn, bạn liệt kê từ điển của bạn và thêm tất cả các đối tượng một chìa khóa vào một từ điển lớn.

+0

Bạn có thể vui lòng cung cấp một ví dụ không? Đó là những gì tôi đang tìm ... một từ điển lớn ở cuối. – user984248

+0

Vâng, tôi có thể, tuy nhiên, giải pháp Pandey_Laxman là tốt hơn. Tôi hoàn toàn quên phương pháp này. Nếu bạn vẫn muốn ví dụ tôi có thể cung cấp một nhưng tôi nghĩ rằng vấn đề là trong các phím trùng lặp như MrAzulay nói. Giải pháp của tôi sẽ không giúp bạn với điều này. – Engeor

+0

Tôi hiểu. Họ có các phím khác nhau tho. Hãy để tôi xem những gì tôi có thể làm với một Array – user984248

1
NSMutableDictionary *mDict=[[NSMutableDictionary alloc]init]; 
    NSMutableDictionary *mDict2=[[NSMutableDictionary alloc]init]; 

//later suppose you have 5 object in mDict and 2 object in mDict2. combine in this Way. 
    NSMutableArray *keys=[[NSMutableArray alloc]init]; 
    NSMutableArray *obj=[[NSMutableArray alloc]init]; 

    keys=[[mDict allKeys] mutableCopy]; 
    obj=[[mDict allValues] mutableCopy]; 

    [keys addObjectsFromArray:[mDict2 allKeys]]; 
    [obj addObjectsFromArray:[mDict2 allValues]]; 

    NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjects:obj forKeys:keys]; 
Các vấn đề liên quan