2016-10-17 10 views
0

iOSキャッシュをクリアすると、私はNSFileManagerを使用していないファイルを削除しますが、シミュレータで行うと、役に立たないファイルはすべてクリアできます本当のiPhone(iPhone 5s)、それは無効で、私はこの質問を解決するのを助けることができますか?どうもありがとうございました!iOSクリアキャッシュ、シミュレータは有効ですが、本物のiPhoneでない場合

コード:

#define docPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] 

#define cachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] 

- (void)clearCaches 
{ 
    [self clearCachesWithFilePath:cachePath]; 
    NSArray *docFileArr = [self getAllFileNames:docPath]; 
    for (NSString * fileName in docFileArr) {   
     if (![fileName isEqualToString:@"mqtt.cer"]) { 
      [self clearCachesWithFilePath:[docPath stringByAppendingString:[NSString stringWithFormat:@"/%@", fileName]]]; 
     } 
    } 
} 

- (NSArray *)getAllFileNames:(NSString *)dirPath{ 
    NSArray *files = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:dirPath error:nil]; 
    return files; 
} 

- (BOOL)clearCachesWithFilePath:(NSString *)path{ 
    NSFileManager *mgr = [NSFileManager defaultManager]; 
    return [mgr removeItemAtPath:path error:nil]; 
} 
+0

'nil'を渡す代わりに' error'パラメータを使います。 – rmaddy

答えて

0

あなたが代わりにキャッシュディレクトリの内容のリストを取得し、それらを一つずつ削除し、キャッシュディレクトリ自体を削除しようとしています。お役に立てれば。

+0

私はキャッシュディレクトリを削除します。そして、私はそれを削除したくない証明書ファイルがあるので、内容のリストを得るディレクトリはドキュメントディレクトリです。だから私はforループを使い、一つずつ削除します。すべて同じようにありがとう。 –

+0

@ZhanchenMaはこれで問題を解決しましたか? –

+0

申し訳ありません、いいえ、それは奇妙でした –

関連する問題