2011-01-05 41 views
6

Tôi có một NSMutableDictionary mỗi phần tử trong số đó là một từ điển khác. Cách tốt nhất để tôi có thể sao chép nội dung của nó vào một số khác là NSMutableDictionary? Tôi đã thử sử dụng:Sao chép nội dung của NSMutableDictionary sang NSMutableDictionary khác?

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary]; 

Tuy nhiên, không chắc chắn đây có phải là cách tốt nhất để làm điều đó hay không.

+0

Tối thiểu, đó là mô tả nhất. Tại sao bạn nghĩ nó không phải là tốt nhất? Bạn có cần một bản sao sâu hoặc nông của các yếu tố? – Schultz9999

+0

Tôi cần một bản sao sâu của các yếu tố. – NSExplorer

+0

Bản sao sâu nghĩa là bạn phải tạo một bản sao của từng trường đơn lẻ của từng phần tử (có nghĩa là bản sao sâu của các trường của trường và v.v.). Chức năng đó không được cung cấp bởi bất kỳ lớp sưu tập nào. Bạn phải tự chăm sóc bản thân. – Schultz9999

Trả lời

5

Kiểm tra phương pháp NSDictionary initWithDictionary:copyItems:.

Nó cho phép sao chép sâu các phần tử thông qua gọi copyWithZone: phương thức của lớp của mục. Bạn sẽ phải tự lo việc sao chép các trường trong phương thức.

0

Bạn có ý nghĩa gì với "tốt nhất"?
Dù sao, tôi liệt kê một số cách đây:

  1. firstDictionary = [NSMutableDictionary dictionaryWithDictionary: secondDictionary];
  2. [[Phân bổ NSDictionary] initWithDictionary: secondDictionary]; // đừng quên để phát hành sau
  3. sử dụng bản sao sâu
  4. sử dụng bản sao cạn
10

Bạn cũng có thể chuyển đổi giữa các từ điển có thể thay đổi và không thể thay đổi bằng cách sử dụng copy và mutableCopy.

- (void) someFunc:(NSMutableDictionary *)myDict { 
    NSDictionary *anotherDict = [myDict copy]; 
    NSMutableDictionary *yetAnotherDict = [anotherDict mutableCopy]; 
} 
0

Tuân thủ giao thức sao chép NSC và thực hiện copyWithZone trên mọi đối tượng.

Nếu NsMutableDictionary chứa một từ điển khác, chứa từ điển khác, thì bạn cần phải làm copyWithZone trên mỗi từ điển ở tất cả các cấp.

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