2013-06-05 2 views
1

Я разрабатываю новый образец приложение с помощью основных данных, которые хранятся «CountryNames» в один объект (названный «Страна») с «CountryId» и «COUNTRYCODE». Я добавил около 200 Countries к Entity «Страна» с их «Имена», «ID» и «Коды» (мне удалось до сих пор).автозаполнение с основными данными

Теперь я хочу, чтобы выполнить "Auto" полный функциональность с этим органом (с именем "Страна"). Я хочу получить все Records, имеющие Country Name (названный cName в Entity) начинаются с Prefix (я напечатал UITextField по имени txtCname).

Fetch Запрос:

- (IBAction)findCountry:(id)sender 
{ 
    AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *moc = [del managedObjectContext]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Country" inManagedObjectContext:moc]; 
    NSFetchRequest *fr = [[NSFetchRequest alloc] init]; 
    [fr setEntity:entity]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cName beginswith[c] %@",txtCname.text]; 
    NSError *error = nil; 
    NSArray *objects = [moc executeFetchRequest:fr error:&error]; 
    NSLog(@"object :: %@",objects); 
    if (objects.count == 0) 
    { 
     NSLog(@"No Match Found."); 
    } 
    else 
    { 
     con = objects[0]; 
     NSLog(@"cName :: %@",con.cName); 
     NSLog(@"cID :: %@",con.cID); 
     NSLog(@"cCode :: %@",con.cCode); 
    } 
} 

Я написал "U" в UITextField. Но, это не дает мне результат с названиями стран, начинающимися с «U».

Итак, может ли кто-нибудь сказать мне, если я на правильном пути или нет?

+0

Эти ссылки могут быть информативным для вас [IOS полнотекстового поиска с Core Data и SQLite] (http://blog.lunatech.com/2013/01/24/ios-core-data-sqlite-full-text-search) и [Поиск ускоренного поиска] (http://swwritings.com/post/2013-04-30-searching-for-speedy -поиск) – Anupdas

+0

@Anupdas: Спасибо за ответ и ссылки. Можете ли вы сказать мне, что Предикат, который я написал, верен или нет? – Bhavin

+0

так что поле названия страны в сущности вашей страны называется cName? Также попробуйте использовать 'BEGINSWITH' вместо небольшого' beginwith'? –

ответ

3

Некоторые вещи, чтобы проверить:

1) Вы действительно установив предикат запроса?

Мол, [fetchRequest setPredicate:predicate];

2) Вы говорите о настройке U в textField - но вы используете txtCname.text в своем заявлении предиката - это то, что правое поле, что на самом деле содержит ваше отправную письмо?

3) Какие данные вы получаете из запроса, если не в списке желаемых стран?

+0

+1 для вашей 1-й точки. – Bhavin

+0

@Vin: Как я только что заметил, правильный ответ уже был дан TheEye, поэтому, возможно, вы могли бы принять его ответ. –

2

Вы забыли назначить предикат для запроса выборки:

NSFetchRequest *fr = [[NSFetchRequest alloc] init]; 
[fr setEntity:entity]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cName beginswith[c] %@",txtCname.text]; 

// ADD THIS LINE: 
[fr setPredicate:predicate]; 
+0

Спасибо за ответ, это была глупая ошибка. Я только начал использовать Core Data. Можете ли вы рассказать мне о каких-то хороших способах научиться этому? – Bhavin

+0

@Vin: Как я только что заметил, правильный ответ уже дал TheEye, поэтому, возможно, вы могли бы принять его ответ. –

+0

Да, конечно. Можете ли вы дать мне ответ на вопрос, который я спросил в своем предыдущем комментарии, а также если вы можете сказать мне, что я делаю для автозаполнения, правильно или есть ли другой оптимальный способ сделать это? Pls Предложите мне ... – Bhavin

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