Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //NSCodingKeys.h
- #import <Foundation/Foundation.h>
- @protocol NSCodingKeys <NSObject>
- - (NSArray *) archiveKeys;
- @end
- //NSKeyedArchiver+Additions.h
- #import <Foundation/Foundation.h>
- #import "NSCodingKeys.h"
- @interface NSKeyedArchiver (Additions)
- - (void) encodeEntireObject:(NSObject <NSCodingKeys> *) instance;
- @end
- //NSKeyedArchiver+Additions.m
- #import "NSKeyedArchiver+Additions.h"
- @implementation NSKeyedArchiver (Additions)
- - (void) encodeEntireObject:(NSObject <NSCodingKeys> *) instance; {
- NSArray * keys = [instance archiveKeys];
- for(NSString * key in keys) {
- id val = [instance valueForKey:key];
- [self encodeObject:val forKey:key];
- }
- }
- @end
- //NSKeyedUnarchiver+Additions.h
- #import <Foundation/Foundation.h>
- #import "NSCodingKeys.h"
- @interface NSKeyedUnarchiver (Additions)
- - (void) decodeEntireObject:(NSObject <NSCodingKeys> *) instance;
- @end
- //NSKeyedUnarchiver+Additions.m
- #import "NSKeyedUnarchiver+Additions.h"
- @implementation NSKeyedUnarchiver (Additions)
- - (void) decodeEntireObject:(NSObject <NSCodingKeys> *) instance; {
- NSArray * keys = [instance archiveKeys];
- for(NSString * key in keys) {
- [instance setValue:[self decodeObjectForKey:key] forKey:key];
- }
- }
- @end
- //ModelBase.h
- #import <Foundation/Foundation.h>
- #import "NSCodingKeys.h"
- #import "NSKeyedArchiver+Additions.h"
- #import "NSKeyedUnarchiver+Additions.h"
- @interface SCModelBase : NSObject <NSCoding,NSCodingKeys>
- @end
- //ModelBase.m
- #import "SCModelBase.h"
- @implementation SCModelBase
- - (id) initWithCoder:(NSCoder *)aDecoder {
- self = [super init];
- NSKeyedUnarchiver * un = (NSKeyedUnarchiver *)aDecoder;
- [un decodeEntireObject:self];
- return self;
- }
- - (void) encodeWithCoder:(NSCoder *)aCoder {
- NSKeyedArchiver * ar = (NSKeyedArchiver *)aCoder;
- [ar encodeEntireObject:self];
- }
- - (NSArray *) archiveKeys {
- return @[];
- }
- - (void) setNilValueForKey:(NSString *)key {
- }
- - (void) setValue:(id)value forUndefinedKey:(NSString *)key {
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment