【发布时间】:2015-01-05 10:46:12
【问题描述】:
我正在使用NSKeyedArchiver 和NSKeyedUnarchiver 为我的应用实现缓存功能。
为了在每次应用启动时加载缓存文件,我将缓存文件存储在NSHomeDirectory() 下。代码(C函数)如下:
NSString* getArchivePathForId(NSString* modelId)
{
NSString *cacheIdentifier = @"CacheIdentifier";
NSString *archiveDirPath = [NSHomeDirectory() stringByAppendingFormat:@"/tmp/%@/cachedModel/%@", getAppVersion(), cacheIdentifier];
NSError* error;
if (![[NSFileManager defaultManager] fileExistsAtPath:archiveDirPath]) {
if (![[NSFileManager defaultManager] createDirectoryAtPath:archiveDirPath
withIntermediateDirectories:YES
attributes:nil
error:&error])
{
NSLog(@"Create directory tmp/cachedModel directory error: %@", error);
return nil;
}
}
NSString *archivePath = [archiveDirPath stringByAppendingFormat:@"/%@", modelId];
return archivePath;
}
只要应用程序正在运行或从后台模式恢复运行,它就可以正常工作。但是一旦应用程序终止并重新运行,缓存的存档文件就会被删除。
有什么办法可以保存存档文件,以便我可以加载上次启动应用程序时存储的缓存。
我已经意识到,每次启动应用程序时,NSHomeDirectory() 的应用程序 id 部分都是不同的。这跟我的问题有关系吗?
【问题讨论】:
-
与论坛网站不同,我们不使用“谢谢”、“感谢任何帮助”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。顺便说一句,这是“提前致谢”,而不是“致谢”。
标签: ios caching nskeyedarchiver nskeyedunarchiver