【发布时间】:2014-05-07 22:27:25
【问题描述】:
我在整个程序中的不同时间调用函数 archiveQueue 来存储 MYJSON 类型的对象,现在我想恢复我迄今为止存储在一个数组中的所有内容。
以下是我用来存储对象的函数:
- (void)archiveQueue:(MYJSON *)msg{
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:msg];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *file = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myqueue.txt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createFileAtPath:file contents:data attributes:nil];
NSLog(@"ArchiveQueue: file = %@", file);
}
以下是我用来恢复对象的功能。
- (void)restoreQueue {
NSLog(@"RestoreQueue: Restoring queue from Document Directory.");
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *file = [[paths objectAtIndex:0] stringByAppendingPathComponent: @"myqueue.txt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSData *data = [fileManager contentsAtPath:file];
// How to unarchive that array of objects being stored.
}
我想知道我应该如何解压缩存储为对象数组的所有内容?
【问题讨论】:
-
如果你在处理 json 为什么不直接保存为 json?
-
由于项目的一些要求,我不允许保存为json。
-
我很困惑。
jsonObject不是你解压后存储的数据吗? -
Okie Chuck !对不起,我现在删除了那行。我只想恢复我通过 NSKeyArchiver 存储的所有对象。
-
createFileAtPath:contents:attributes:将覆盖之前在该位置的所有内容。你总是会得到一个对象。
标签: objective-c nskeyedarchiver nskeyedunarchiver