Я создал NSPredicate, подобный тому, что был ниже, и он отлично работал. Тем не менее, на этот раз, он генерирует ошибку:IOS/Objective-C: ошибка вне диапазона с NSPredicate
'NSRangeException', reason: '-[NSTaggedPointerString characterAtIndex:]: Index 1 out of bounds; string length 1'
Вот как я построить предикат:
NSString *shortTitleClause = nil;
NSString *longTitleClause = nil;
Edit:
Добавление статей:
shortTitleClause =[NSString stringWithFormat:@"(shorttitle contains[c] %@)", searchText];
longTitleClause =[NSString stringWithFormat:@"(longtitle contains[c] %@)", searchText];
// У моего фактического предиката есть много других предложений, но я получаю такую же ошибку, независимо от того, сколько.
NSMutableArray *predArr = [@[] mutableCopy];
if (shortTitleClause.length > 0){
[predArr addObject:shortTitleClause];
}
if (longTitleClause.length > 0){
[predArr addObject:longTitleClause];
}
NSString *predStr = [predArr componentsJoinedByString:@"||"];
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:predStr];
searchResults = [theBooks filteredArrayUsingPredicate:resultPredicate];
When searching for the letter 'S' the predicate logs as: `(shorttitle contains[c] S)||(longtitle contains[c] S)`
Непонятно мне, что означает taggedPointerString. Кто-нибудь может понять, почему я получаю эту ошибку?