在方法中,我有:
[self makeRequestToServerForVehicles:self.load.loadId successBlock:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
Info *info = mappingResult.array[0];
self.load.bagOne = info.firstArray;
self.load.bagTwo = info.secondArray;
self.load.itemsNeeded = [self itemsFromBagTwo]; <---- App crashes here
- (NSArray *)itemsFromBagTwo{
NSMutableArray *items = [[NSMutableArray alloc] init];
for (Group *group in self.load.bagTwo) {
[items addObjectsFromArray:group.items];
}
return items;
}
当我运行此应用程序时,应用程序崩溃时出现此错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'setObjectForKey:key不能为nil'
当我NSLog返回的数组时,它不会返回nil。它带回了它需要回来的物品。
如果我这样做,
NSArray *items = [self itemsFromBagTwo]; <--- Doesn't crash
我不确定有什么问题,非常感谢任何帮助。
答案 0 :(得分:1)
错误使得听起来好像编译器使用键值编码而不是getter和setter方法来解释self.load.
itemsNeeded。
尝试将代码重写为
[[self load] setItemsNeeded: [self itemsFromBagTwo] ];
看看会发生什么。 (该代码执行显式方法调用,而不是可能调用getter和setter的模糊代码,可能引用结构中的项目,或者可能编译为键值编码。)