0

ロジックの観点からはすべて問題ないように見えますが、何らかの理由で、私が書いたこのメソッドはディレクトリ内の最も古いファイルを削除しません。私が見逃している微妙なものはありますか?

+(void)removeOldestFileFromDir:(NSURL *)dir forFileManager:(NSFileManager *)fm{
NSError *error = nil;
NSArray *contents = [fm contentsOfDirectoryAtPath:[dir path] error:&error];
NSArray *jpgFiles = [contents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"]];

NSDate *oldest = [NSDate date];
NSString *oldestFileName = nil;
for (NSString *f in jpgFiles) {
    NSString *photoPath = [[dir path] stringByAppendingPathComponent:f];

    NSDate *created = [[fm attributesOfItemAtPath:photoPath error:&error] objectForKey:@"NSFileCreationDate"];

    if([created compare:oldest] == NSOrderedAscending){
        oldestFileName = [NSString stringWithString:photoPath];
    }
}
[fm removeItemAtPath:oldestFileName error:&error];

}

私はエラーをチェックしましたが、それは常に (null) であり、削除されるファイルは一見ランダムです。

4

1 に答える 1

3

if 内で最も古い変数を設定するのを忘れています。

次のようになります。

 if([created compare:oldest] == NSOrderedAscending){
        oldestFileName = [NSString stringWithString:photoPath];
        oldest = created; // !!! This is what is missing
   }
于 2013-04-01T17:23:51.483 に答える