I need to save a NSMutableArray to disk in order to store my application data. I know there are a lot of similiar questions out there but none of them I found covers my question.
I do not want to integrate CoreData just for saving one NSMutableArray. Normally I would go for implementing the NSCoding protocol and using the NSKeyedUnarchiver. Unfortunately my data model class has some foreign classes from a library which do not implement the NSCoding protocol.
So which is the best way for me to store my array ?
This is what I tried but because of the given reasons it won't work:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <ForeignFramework/ForeignFramework.h>
@interface DEModelClass : NSObject <NSCoding>
@property (nonatomic,strong) ForeignFramework *foreignFramework;
@property (nonatomic,strong) UIImage *image;
@property (nonatomic,copy) NSNumber *number1;
@property (nonatomic,copy) NSNumber *number2;
@end
#define kEncodeKeyForeign @"kEncodeKeyForeign"
#define kEncodeKeyImage @"kEncodeKeyImage"
#define kEncodeKeyNumber1 @"kEncodeKeyNumber1"
#define kEncodeKeyNumber2 @"kEncodeKeyNumber2"
#pragma mark - NSCoding
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.foreignFramework forKey:kEncodeKey];
[aCoder encodeObject:self.image forKey:kEncodeKeyImage];
[aCoder encodeObject:self.number1 forKey:kEncodeKeyNumber1];
[aCoder encodeObject:self.number2 forKey:kEncodeKeyNumber2];
}
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super init]))
{
self.foreignFramework = [aDecoder decodeObjectForKey:kEncodeKeyForeign];
self.image = [aDecoder decodeObjectForKey:kEncodeKeyImage];
self.number1 = [aDecoder decodeObjectForKey:kEncodeKeyNumber1];
self.number2 = [aDecoder decodeObjectForKey:kEncodeKeyNumber2];
}
return self;
}
0 comments:
Post a Comment