从阵列分配数组时,应用程序崩溃

时间:2015-01-08 23:46:49

标签: ios objective-c arrays

在方法中,我有:

[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

我不确定有什么问题,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

错误使得听起来好像编译器使用键值编码而不是getter和setter方法来解释self.load. itemsNeeded。

尝试将代码重写为

[[self load] setItemsNeeded: [self itemsFromBagTwo] ]; 

看看会发生什么。 (该代码执行显式方法调用,而不是可能调用getter和setter的模糊代码,可能引用结构中的项目,或者可能编译为键值编码。)