2011-09-19 18 views

Trả lời

14

NSMutableDictionary kế thừa từ NSDictionary. Vì vậy, writeToFile sẽ có sẵn cho cả hai lớp.

7

NSMutableDictionary là một phân lớp của NSDictionary, do đó phương thức writeToFile sẽ có sẵn cho đối tượng của bạn mà không phải thực hiện bất kỳ phép đúc hoặc chuyển đổi nào.

6

Như đã thảo luận ở đây:

How to save a NSMutableDictionary into a file in documents?

bạn không cần phải chuyển đổi nó.

Nhưng nếu bạn thực sự muốn, chỉ cần sử dụng phương pháp copy trên NSMutableDictionary hoặc phương pháp dictionaryWithDictionary: của bạn trên NSDictionary. Cả hai đều cung cấp số NSDictionary từ số NSMutableDictionary.

3

Một NSMutableDictionary một NSDictionary vì nó là một phân lớp. Thông thường mối quan hệ của một lớp con với siêu lớp của nó được gọi là: "là một".

13

Đối với những người đến đây thực sự tìm kiếm chuyển đổi từ NSMutableDictionary để NSDictionary:

NSMutableDictionary *mutableDict = [[[NSDictionary alloc] initWithObjectsAndKeys: 
           @"value", @"key"] mutableCopy]; 

NSDictionary *dict = [NSDictionary dictionaryWithDictionary:mutableDict]; //there you have it 
1

Để giải quyết những tiêu đề câu hỏi thực tế và không phải là nội dung (kể từ khi tôi đã tìm kiếm cho Q này), bạn thực sự có thể dựa vào copyWithZone: để có được xuống một từ điển không thể thay đổi.

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc] init]; 
mutableDict[@"key"] = @"value"; 
NSDictionary *immutableDict = [mutableDict copy];