I\'m working on a rss reader. It is just a tableview and each cell shows a custom data model RSSEntry. And I have a NSMutableArray allEntries which contains all RSSEntry I got f
Place all the entries you want to store into an NSArray and use this code:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:entries];
Where entries is your array of entries. Nice and easy, just one line of code.
To unarchive, just use
NSArray *entries = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSKeyedArchiver is able to archive any data structure, even a very complex one, of Objective-C objects that implement the NSCoding protocol, including nested NSArrays, NSDictionarys, and custom objects, to a file. NSKeyedUnarchiver does the reverse, taking any data produced by NSKeyedArchiver and reestablishing the original object graph that was archived. Technically, they could just be a single class, but Apple decided to separate them by functionality because this is more grammatically correct or something :)
I assume you are able to write the resulting NSData object to a file, and read it back again.
For iOS 12:
for archivedDataWithRootObject:
NSData *myDicData = [NSKeyedArchiver archivedDataWithRootObject:AllDataDic
requiringSecureCoding:YES error:nil];
[[NSUserDefaults standardUserDefaults] setObject:myDicData forKey:@"Yourkey"];
for unarchivedObjectOfClass:
NSData *tempData = [[NSUserDefaults standardUserDefaults] valueForKey:@"Yourkey"];
NSDictionary *myDicProfile = [NSKeyedUnarchiver unarchivedObjectOfClass:[NSDictionary class]
fromData:tempData error:nil];
You could store an NSDictionary as following
NSDictionary *Your_NSDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"Obj1", @"Key1",
@"Obj2", @"Key2", nil];
//store dictionary
NSMutableData *yourData = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:yourData];
[archiver encodeObject:Your_NSDictionary forKey: @"key"];
archiver finishEncoding];
[yourData writeToFile:@"FilePath" atomically:YES];
[yourData release];
[archiver release];
//Load dictionary
NSData *yourData = [[NSMutableData alloc]initWithContentsOfFile:@"FilePath"];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:yourData];
Your_NSDictionary = [unarchiver decodeObjectForKey: @"key"];
[unarchiver finishDecoding];
[unarchiver release];
[yourData release];