提问人:Dave L 提问时间:4/25/2022 更新时间:5/19/2022 访问量:74
Xcode 13 上的 CoreData valueForKey 问题
CoreData valueForKey issue on Xcode 13
问:
我在客户端的应用程序中遇到了一个问题,当使用 Xcode 版本 >= 13.x 构建应用程序时,对 NSManagedObject 子类上的 valueForKey: 调用特定 CoreData 属性失败。对于某些属性,像这样的调用(Object 将是 NSManagedObject 的子类,具有名为“propertyName”的属性):
Object *object = ....
[object valueForKey:@"propertyName"]
导致对 valueForUndefinedKey: 的调用,而不是返回属性的实际值。
当应用程序使用早期版本的 Xcode 构建时(我尝试过 12.5.1),它工作正常,值按预期返回,无需调用 valueForUndefinedKey:。
有人见过这样的行为吗?
答:
0赞
Dave L
5/18/2022
#1
万一有人遇到这个问题,我确实解决了。问题在于,该项目以一种非常奇怪的方式覆盖了 NSManagedObject 的 valueForKey: 方法。基本上,它有这个:
@interface NSManagedObject (Ext)
@end
@implementation NSManagedObject (Ext)
- (id)valueForKey:(id)key {
// do stuff
[super valueForKey:key];
}
@end
在 Xcode 13 和 iOS 15 之前,这似乎工作正常(尽管这是一件非常糟糕的事情),但现在有不可预测的行为。解决方案是创建一个类,该类是 NSManagedObject 的子类,在该新类中重写该方法,并使其他类成为该新类的子类。
评论