我正在开发一个 RSS 阅读器。它只是一个表格视图,每个单元格显示一个自定义数据模型 RSSEntry。我有一个 NSMutableArray allEntries,其中包含我从服务器获得的所有 RSSEntry。这是 RSSEntry 的样子:
@interface RSSEntry : NSObject <NSCoding> {
NSString *_blogTitle;
NSString *_articleTitle;
NSString *_articleUrl;
NSDate *_articleDate;
}
我想从本地存档恢复数据,因此当我退出并再次打开此应用程序时,表格视图将填充上次刷新时的数据。
我读过“开始 iOS5 编程”中的示例,但它只存储和恢复一种数据模型。所以我不知道如何存储这个充满我的自定义数据模型的可变数组并恢复它。
我使用以下代码来存储和恢复数据:
// STORE
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:entry forKey:kDataKey];
[archiver finishEncoding];
// RESTORE
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath:kFilename]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
RSSEntry *entries = [unarchiver decodeObjectForKey:kDataKey];
[unarchiver finishDecoding];
我只能通过这种方式存储和恢复一种数据模型。
谁能帮帮我。我是 iOS 编程新手,可能有点乏味。抱歉。
将所有要存储的条目放入NSArray
并使用此代码:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:entries];
Where entries
是你的条目数组。简单又好用,只需一行代码。
要取消存档,只需使用
NSArray *entries = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSKeyedArchiver
能够归档 Objective-C 对象的任何数据结构,甚至是非常复杂的数据结构实施NSCoding
协议,包括嵌套的NSArray
s, NSDictionary
s 和自定义对象到文件。NSKeyedUnarchiver
执行相反的操作,获取由NSKeyedArchiver
并重新建立已存档的原始对象图。从技术上讲,它们可能只是一个类,但苹果决定按功能将它们分开,因为这在语法上更正确或其他什么:)
我假设你能够写出结果NSData
对象到一个文件,然后再次读回它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)