с использованием NSPredicate contains для поиска символов в поле сущности coredata

Я пытаюсь найти всех клиентов, содержащих определенную последовательность букв. Я хочу, чтобы функциональность была идентична NSString rangeofString, за исключением нечувствительности к регистру. Вот мой метод:

-(NSArray *) db_search: (NSString *) table where: (NSString*) fieldKey contains: (NSString*) value withSortField: (NSString *) sortField{
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    NSEntityDescription *entity = [NSEntityDescription entityForName:table inManagedObjectContext:context];
    if (fieldKey != nil){
        NSPredicate *predicate = [NSPredicate
                                  predicateWithFormat:@"(%@ contains[c] %@)",
                                  fieldKey,value];
        [request setPredicate:predicate];
    }
    [request setEntity:entity];

    if (sortField != nil){
        NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:[self extractSortField:sortField] ascending:[self isAscending:sortField]] autorelease];
        NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor, nil] autorelease];
        [request setSortDescriptors:sortDescriptors];
    }

    NSError *error;
    return [context executeFetchRequest:request error:&error];
}

Я вызываю его со следующими значениями:

NSArray * results = [self db_search:@"Customer" where:@"fullname" contains:@"matt" withSortField:nil];

Вместо получения всех Matts, Matthews и т. Д. Он зависает, когда я пытаюсь распечатать результаты. Я отладил его, и мы даже не получаем пустой массив NSArray. Я печатаю NSArray на консоль, и я не получаю 0 элементов .. Я просто ничего не получаю.

Я пробовал делать дамп БД на консоль, и он содержит все нужные вещи. ПОМОГИТЕ!!!

= ОБНОВЛЕНИЕ =============================================== =========

Я использую% K и получаю странную ошибку времени выполнения:

if (searchResults1 != nil){
    NSLog(@"%Matches: %i", [searchResults1 count]);
}else {
    NSLog(@"Was NULL");
}

Это в строке NSLog (@ "% Matches :. Это ПЛОХАЯ ошибка EXC. Итак, searchResults1 не nill, но он вылетает, когда я пытаюсь прочитать счетчик? Когда я отлаживаю, searchResults1 действительно является NSArray, но, похоже, в нем ничего нет.

5
задан Mike S 17 March 2011 в 08:04
поделиться