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 NSArray
s, NSDictionary
s, 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];