目前,在我的iPhone应用程序中,我正在将{strong>大块数据从NSData
对象保存到NSUserDefaults
。我知道这不是最好的方法,因为NSUserDefaults
仅用于存储小块数据。
我这样做是这样的:
NSData *data = [NSData alloc]init]];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyData"];
用于延迟检索此数据。
将此data
永久保存以供进一步使用的正确方法是什么?
答案 0 :(得分:2)
创建一个包含所需属性的自定义类(.h文件):
#import <Foundation/Foundation.h>
@interface CustomHolder : NSObject {
NData *data;
}
@property (strong, nonatomic) NSData *data;
@end
然后设置.m文件,以便您可以对对象进行编码/解码
#import "CustomHolder.h"
@implementation CustomHolder
@synthesize data;
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:data forKey:@"data"];
}
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super init])
{
self.data = [decoder decodeObjectForKey:@"data"];
}
return self;
}
@end
然后你可以[NSKeyedArchiver archiveRootObject:obj toFile:[self saveFilePath]]
保存并[NSKeyedUnarchiver unarchiveObjectWithFile:[self saveFilePath]]
加载。
这适用于任何类型的数据,并允许您根据需要向对象添加任意数量的不同数据文件。
答案 1 :(得分:1)
NSUserDefaults对于少量数据非常方便,而不是复杂的数据结构 除非您有一个存储数据的外部服务器,否则没有真正的“永久”方式来保存数据,但只要应用程序没有被删除,Core Data就是一种很好的存储方式。
Ray Wenderlich的tutorial是一个很好的起点。带您了解NSManagedObject概念,fetchRequests等。 它有几个部分,因此您可以逐步构建数据模式
祝你好运