У меня в настоящее время есть файл plist в моем проекте iOS, который загружается из Интернета, когда доступны обновления, и содержит список новостных статей вместе с изображениями.
Приложение кэширует изображения на iPhone для автономного доступа, в настоящее время я пытаюсь написать функцию, которая будет часто очищать кэшированные файлы.
В настоящее время у меня есть этот код, который ищет в папке Temp изображения и затем удаляет их, однако для каждого найденного изображения я хотел бы проверить, существует ли имя файла как значение в списке, сохраненном как NSDictionary перед удалением, однако Я не уверен в быстром способе поиска NSDictionary без необходимости в операторе for.
Любые советы будут великолепны.
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:TMP error:nil];
if (files == nil) {
// error...
NSLog(@"no files found");
}
for (NSString *file in files) {
NSString *uniquePath = [TMP stringByAppendingPathComponent: file];
if([file rangeOfString: @".png" options: NSCaseInsensitiveSearch].location != NSNotFound)
{
NSLog(@"%@", file);
if ([[NSFileManager defaultManager] removeItemAtPath: uniquePath error: NULL] == YES)
NSLog (@"Remove successful");
else
NSLog (@"Remove failed");
}
}
EDIT
В настоящее время я добавил это, но не уверен, что это лучший способ сделать это, но это работает.
NSArray *newsArray = [self.newsData allValues];
// Convert the Array into a string
NSString *newsString = [newsArray description];
// Perform Range Search.
NSRange range;
range = [newsString rangeOfString : filename];
if (range.location != NSNotFound) {
NSLog(@"The file exists in the plist %@", filename);
} else {
// Delete the file
}