2

我正在使用核心数据开发一个新的示例应用程序,它将"CountryNames"存储到一个带有"CountryID""CountryCode"的实体(名为"Country")中。我用他们的“名称”“ID”“代码”添加到实体“国家”(我成功到现在)。200 Countries

现在,我想用这个实体(名为“国家” )执行“自动完成”功能。我想获取所有以(命名为)开头的(我输入了命名)。RecordsCountry NamecNameEntityPrefixUITextFieldtxtCname

获取请求:

- (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”开头的国家名称的结果。

那么,谁能告诉我我是否走对了路?

4

2 回答 2

3

需要检查的一些事项:

1)您确实在查询上设置谓词吗?

喜欢,[fetchRequest setPredicate:predicate];

2)你谈到设置 U textField——但你txtCname.text在你的谓词语句中使用——是正确的字段确实包含你的起始字母吗?

3)如果不是所需的国家/地区列表,您会从查询中获得什么数据?

于 2013-06-05T08:32:18.597 回答
2

您忘记将谓词分配给 fetch 请求:

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

// ADD THIS LINE:
[fr setPredicate:predicate];
于 2013-06-05T09:34:26.807 回答