Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You can store the collection of <code>Event</code> in <code>NSUserDefaults</code>. Since its a custom class, you need to implement <code>NSCoding</code> protocol for serialization to <code>NSUserDefaults</code>.</p> <pre><code>//Event.h @interface Event : NSObject&lt;NSCoding&gt; @property (nonatomic, copy) NSString *name; @property (nonatomic, strong) NSDate *time; @property (nonatomic) NSInteger repeat; - (void)save; + (NSArray *)allEvents; //Event.m #define kSavedEvents @"SavedEvents" #pragma mark - Encoding - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:self.name forKey:@"EventName"]; [encoder encodeObject:self.time forKey:@"EventTime"]; [encoder encodeObject:@(self.repeat) forKey:@"EventRepeat"]; } #pragma mark - Decoding - (id)initWithCoder:(NSCoder *)decoder { self = [super init]; if (self) { _name = [decoder decodeObjectForKey:@"EventName"]; _time = [decoder decodeObjectForKey:@"EventTime"]; _repeat = [[decoder decodeObjectForKey:@"EventRepeat"]integerValue]; } return self; } </code></pre> <p>You need to archive the data while storing to NSUserDefaults and unarchive when fetching</p> <pre><code> (void)save { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSData *savedData = [defaults objectForKey:kSavedEvents]; NSMutableArray *savedEvents = [@[] mutableCopy]; //Some events are already there in there if (savedData) { savedEvents = [[NSKeyedUnarchiver unarchiveObjectWithData:savedData]mutableCopy]; } [savedEvents addObject:self]; //Archiving the savedEvents to data NSData *newEventData = [NSKeyedArchiver archivedDataWithRootObject:savedEvents]; [defaults setObject:newEventData forKey:kSavedEvents]; [defaults synchronize]; } + (NSArray *)allEvents { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSData *data = [defaults objectForKey:kSavedEvents]; if (data) { return [NSKeyedUnarchiver unarchiveObjectWithData:data]; } return nil; } </code></pre> <p>Hope this will get you started.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload