我有这两个实体:
店
类别
我正在尝试从Shop实体访问category.name但是我收到一个错误:
- (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];
但我得到这个错误:
‘[< NSManagedobject 0x1cdb4890> valueForUndefinedKey:]:实体Shop不是键值“category.name”的键值编码兼容.
我该如何解决这个错误?
解决方法 self.categoryLabel.text = [[shop valueForKey:@“category.name”] description];应该
self.categoryLabel.text = [[shop valueForKeyPath:@“category.name”] description];
原因:从Key Value Coding Documentation开始
键是一个标识对象特定属性的字符串.通常,键对应于接收对象中的访问器方法或实例变量的名称.密钥必须使用ASCII编码,以小写字母开头,并且可能不包含空格.
一些示例键是收款人,开户平衡,交易和金额.
键路径是一串点分隔键,用于指定要遍历的对象属性序列.序列中第一个键的属性是相对于接收者的,并且每个后续键相对于前一个属性的值进行评估.
例如,键路径address.street将从接收对象获取address属性的值,然后确定相对于地址对象的street属性.
总结以上是内存溢出为你收集整理的ios – 实体商店不是键值“category.name”的键值编码兼容全部内容,希望文章能够帮你解决ios – 实体商店不是键值“category.name”的键值编码兼容所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)