Có một số cách để tiếp cận điều này:
a. Tạo một thực thể đại diện cho NSDictionary, sao cho mỗi khóa từ điển được đại diện bởi một thuộc tính thực thể.
b. Nếu bạn không thích cách tiếp cận ở trên, nơi bạn tạo một thực thể riêng biệt, bạn vẫn có thể lưu NSDictionary vào một trường Dữ liệu cốt lõi của kiểu NSData, miễn là bạn tuần tự hóa NSDictionary thành NSData trước.
//NSDictionary to NSData
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dictionary forKey:@"Some Key Value"];
[archiver finishEncoding];
// data is now ready to use
Bạn cũng cần chuyển đổi NSData trở lại NSDictionary khi đọc từ Dữ liệu chính.
// NSData to NSDictionary
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *dictionary = [[unarchiver decodeObjectForKey:@"Some Key Value"] retain];
[unarchiver finishDecoding];
// dictionary is now ready to use
c. Cuối cùng, bạn có thể sử dụng khung công tác kiên trì như Bảng nhìn nhạy cảm, nơi tất cả các cấu trúc dữ liệu của bạn được tự động tìm nạp, hiển thị và lưu. Tiết kiệm cho tôi rất nhiều mã.
Các lưu trữ/hủy lưu trữ xảy ra tự động nếu bạn xác định các thuộc tính là "Biến đổi". –
Cảm ơn các bạn, thực sự đánh giá cao câu trả lời. Một điều nữa, làm thế nào về nếu bạn đang tìm kiếm lưu trữ các loại tài sản NSDictionary trong một loại thuộc tính của chuỗi trong dữ liệu cốt lõi? – user1889672
Tất cả điều này có thể được thực hiện tự động, thay vào đó hãy xem câu trả lời thuộc tính Biến thể. Đặt thuộc tính thành Biến đổi và bạn đã hoàn tất. – malhal