2013-04-01 3 views
0

По какой-то причине этот метод, который я написал, не избавляет от самого старого файла в каталоге, хотя все кажется прекрасным с логической точки зрения. Есть ли что-то тонкое, которого я не хватает?Удалить самый старый файл в каталоге iOS

+(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]; 

} 

Я проверил ошибку, и это все дни (нуль), и файл, который получает удаление, казалось бы, случайным образом - иногда это самый новый, иногда это еще один.

ответ

2

Вы забудете установить самую старую переменную внутри вашего if.

Это должно быть так:

if([created compare:oldest] == NSOrderedAscending){ 
     oldestFileName = [NSString stringWithString:photoPath]; 
     oldest = created; // !!! This is what is missing 
    } 
+0

СПАСИБО! Вероятно, самая тупая ошибка, которую я мог бы сделать, но рад, что это ничего сложнее, я начинал думать, что программирование на iPhone предназначено только для Einstens. – SimonBarker

+0

@SimonBarker: Случилось все мы :) –

Смежные вопросы