アプリのキャッシュ機能を実装するために使用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;
}
アプリが実行されているか、バックグラウンド モードからライブに戻っている限り、問題なく動作します。ただし、アプリを終了して再実行すると、キャッシュされたアーカイブ ファイルは削除されます。
アプリが最後に起動されたときに保存されたキャッシュをロードできるように、アーカイブ ファイルを永続化する方法はありますか。
アプリが起動されるたびに、のアプリケーションID部分NSHomeDirectory()
が異なることにすでに気付きました。これは私の問題と関係がありますか?