У меня проблемы с фильтрацией массива с помощью предиката. Мой код такой:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSError *error;
NSFileManager *fm = [NSFileManager defaultManager];
NSString *filename=[NSString stringWithFormat:@"%@/%lld-%@.jpg",[paths objectAtIndex:0],[TRIP surrogateKey], ms];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:[paths objectAtIndex:0] error:&error];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"SELF beginsWith %lld-%@",[TRIP surrogateKey], ms];
NSArray *registros=[dirContents filteredArrayUsingPredicate:fltr];
В сеансе отладки я обнаружил, что у меня проблема с выполнением последней строки кода (NSArray * registros = [dirContents filterArrayUsingPredicate: fltr]), и это дает мне следующую ошибку:
-[__NSCFString objCType]: unrecognized selector sent to instance 0x7e67200 2013-02-01 16:37:59.132 GastosApp[4462:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objCType]: unrecognized selector sent to instance 0x7e67200'
В разделе отладки я увидел, что память 0x7e67200 занята объявленной переменной ms:
NSMutableString *ms = [[NSMutableString new] autorelease];
Кто-нибудь видит ошибку?
Спасибо и привет
1 ответ
Это может быть ошибка, потому что NSPredicate автоматически цитирует переменные формата, такие как% @.
Например, это:
[NSPredicate
predicateWithFormat:@"SELF like[c] %@*%@", prefix, suffix];
Будет как: SELF LIKE[c] "prefix" * "suffix"
Правильно:
[NSPredicate
predicateWithFormat:@"SELF like[c] %@",
[[prefix stringByAppendingString:@"*"] stringByAppendingString:suffix]];
Что дает нам правильный результат: SELF LIKE[c] "prefix*suffix"
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.