0

アプリのキャッシュ機能を実装するために使用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()が異なることにすでに気付きました。これは私の問題と関係がありますか?

4

1 に答える 1