2016-01-14 3 views
1

У меня есть несколько файлов изображений в папке документов, и имена выглядят как a_b.png, где a - это идентификатор (его номер) каждого пользователя, а b - имя изображения (s) он спасает. Поэтому я хочу найти все изображения пользователя с помощью id = 1 и сохранить их в массиве. Im просматривает каждый файл изображения, и я хочу сравнить имя файла с шаблоном 1 _ *. Png. Я попробовалПоиск соответствия определенной строке

NSString *searchterm = [NSString stringWithFormat:@"%lu_*.png",clientID]; 
for(NSString filename in docFiles) 
{ 
if([fileName isEqualTostring:searchterm]) 
{.....} 
} 

но я не получил никакого результата.

Любые идеи о том, как я могу это сделать?

+0

Вы используете Regex/NSPredicate – Larme

+0

Можете ли вы напечатать 'filename' и' searchterm' для каждого цикла? – Randy

+0

Возможный дубликат [Сравнение строки с массивом в объекте-C] (http://stackoverflow.com/questions/1011996/comparing-a-string-to-an-array-in-objective-c) –

ответ

1

я бы:

  1. Создать подкаталог для каждого идентификатора клиента, сохраняя все изображения для этого клиента в данном подкаталоге.
  2. Используйте [NSFileManager contentsOfDirectoryAtPath:error:] для перечисления файлов внутри этого подкаталога клиента.
+0

Хорошее предложение , Я попробую это. благодаря – gpapazac

0

Попробуйте проверить префикс и суффикс. Я полагаю, что это было бы более эффективно, чем регулярное выражение, и, безусловно, было бы легче читать.

if([fileName hasPrefix:[NSString stringWithFormat:@"%ld_",clientID]] && [fileName hasSuffix:@".png") { 
} 
0

Как большой, предлагает сделать звездочку подстановочных знаков вы хотите, вы должны использовать NSPredicate для фильтрации docFiles. Например:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", searchterm]; 
NSArray *results = [docFiles filteredArrayUsingPredicate:predicate]; 

Но ответ троянфия, похоже, является лучшей практикой в ​​целом.

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