【发布时间】:2015-04-08 12:31:54
【问题描述】:
我需要将NSMutableArray 保存到磁盘,以便存储我的应用程序数据。我知道有很多类似的问题,但我发现没有一个能涵盖我的问题。
我不想仅仅为了保存一个NSMutableArray 而集成Core Data。通常我会去实现NSCoding 协议并使用NSKeyedUnarchiver。不幸的是,我的数据模型类有一些来自库的外部类,它们没有实现NSCoding 协议。
那么对我来说存储数组的最佳方式是什么?
这是我尝试过的,但由于给定的原因,它不起作用:
#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;
}
【问题讨论】:
标签: ios objective-c cocoa-touch serialization nsarray