Objective c 为什么valueForKeyPath抛出NSInvalidArgumentException?
我正在调试其他人的代码,所以这就是我在不知道代码的情况下达到这一点的原因 valueForKeyPath正在抛出NSInvalidArgumentException并在给定以下代码的情况下崩溃我的应用程序:Objective c 为什么valueForKeyPath抛出NSInvalidArgumentException?,objective-c,core-data,kvc,Objective C,Core Data,Kvc,我正在调试其他人的代码,所以这就是我在不知道代码的情况下达到这一点的原因 valueForKeyPath正在抛出NSInvalidArgumentException并在给定以下代码的情况下崩溃我的应用程序: NSMutableSet *cars = self.allCars; //assume allCars is already initialized and contains at least one car. NSString *key = @"make"; NSString *disti
NSMutableSet *cars = self.allCars; //assume allCars is already initialized and contains at least one car.
NSString *key = @"make";
NSString *distinctUnionOfObjects = [NSString stringWithFormat:@"@distinctUnionOfObjects.%@",key];
NSArray *makeArray = [cars valueForKeyPath:distinctUnionOfObjects];
我注意到这里提到了@distinctUnionOfObjects操作符:
如果任何叶对象为nil,此运算符将引发异常
那么,在我的具体示例中,叶对象是什么?如何跟踪哪个叶具体为nil?它基本上意味着集合中的某个对象,如果发送
make
消息(在本例中),则不返回任何内容(nil
)。老实说,这个由苹果提供的特定操作符并没有以最健壮的方式实现,您最好编写自己的类似助手例程,在接受nil
值等的同时进行过滤。