2010-07-01 39 views

Trả lời

32

sử dụng NSKeyedArchiver

Để chuyển đổi NSDictionary Để NSData

NSMutableData *data = [[NSMutableData alloc]init]; 
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data]; 
[archiver encodeObject:YOURDICTIONARY forKey: YOURDATAKEY]; 
archiver finishEncoding]; 
[data writeToFile:YOURFILEPATH atomically:YES]; 
[data release]; 
[archiver release]; 

Để có được NSDictionary trở về từ lưu trữ NSData

NSData *data = [[NSMutableData alloc]initWithContentsOfFile:YOURFILEPATH]; 
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
YOURDICTIONARY = [unarchiver decodeObjectForKey: YOURDATAKEY]; 
[unarchiver finishDecoding]; 
[unarchiver release]; 
[data release]; 
2

Một phiên bản đơn giản hơn nhiều câu trả lời của Robert:

[NSKeyedArchiver archiveRootObject:YOURDICTIONARY toFile:YOURFILEPATH]; 

Và, tương ứng:

YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithFile:YOURFILEPATH]; 

Hoặc để trả lời những câu hỏi như thiết lập ban đầu, mà không imputing một tập tin vào điều:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YOURDICTIONARY]; 
... 
YOURDICTIONARY = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 

Đó là tất cả các phương pháp nhà máy do đó, nó cùng mã có hoặc không có ARC; các phương pháp được sử dụng đã có sẵn từ OS X v10.2 và trên iOS kể từ ngày đầu tiên.

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