Ios 实体商店不符合密钥的键值编码;类别名称“;

Ios 实体商店不符合密钥的键值编码;类别名称“;,ios,core-data,Ios,Core Data,我正在用CoreData开发一个iOS应用程序 我有两个实体: 购物 类别 我正试图从商店实体访问类别.名称,但出现错误: - (void)updateDetails:(NSManagedObject *)shop { NSLog(@"updateDetails: %@", shop); if (shop == nil) return; self.nameLabel.text = [[shop valueForKey:

我正在用CoreData开发一个iOS应用程序

我有两个实体:

购物

类别

我正试图从
商店
实体访问
类别.名称
,但出现错误:

- (void)updateDetails:(NSManagedObject *)shop
{
    NSLog(@"updateDetails: %@", shop);

    if (shop == nil)
        return;

    self.nameLabel.text =      [[shop valueForKey:@"name"] description];
    self.categoryLabel.text =  [[shop valueForKey:@"category.name"] description];
    self.addressLabel.text =   [[shop valueForKey:@"address"] description];
    self.telephoneLabel.text = [[shop valueForKey:@"telephone"] description];
    
    NSNumberFormatter* f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber* acceptRate = [f numberFromString:[[shop valueForKey:@"acceptRate"] description]];
    
    _ratingControl.rating = [acceptRate unsignedIntValue];
}
我通过以下方式检索
Shop
实体:

NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Shop"
                                          inManagedObjectContext:context];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];

NSArray *results = [context executeFetchRequest:fetchRequest error:nil];
但我得到了这个错误:

”[valueForUndefinedKey:]:实体商店不符合密钥“category.name”的键值编码。


如何解决此错误?
self.categoryLabel.text=[[shop valueForKey:@“category.name”]description]

应该是


self.categoryLabel.text=[[shop valueForKeyPath:@“category.name”]description]

原因:来自

键是标识对象特定属性的字符串。通常,键对应于接收对象中访问器方法或实例变量的名称。键必须使用ASCII编码,以小写字母开头,并且不能包含空格

一些示例键是
收款人
期初余额
交易
金额

关键点路径是一组点分隔的关键点,用于指定要遍历的对象特性序列。序列中第一个键的属性是相对于接收器的,每个后续键都是相对于前一个属性的值进行评估的

例如,键路径
address.street
将从接收对象获取address属性的值,然后确定相对于address对象的street属性。

仅需添加-这来自