我想将NSObject添加到块内的NSMutableArray中。在下面的代码中,NSLog行正常工作并返回我期望的数字。但是,当我尝试将该结果添加到NSArray时,当我稍后访问它时,该数组总是为空。
CMStepQueryHandler stepQueryHandler = ^(NSInteger numberOfSteps,
NSError *error) {
NSLog(@"CMStepQueryHandler: Steps on day: %i", (int)numberOfSteps);
[stepsPerDay addObject:[NSNumber numberWithInt:numberOfSteps]];
};
如何从块内部向NSMutableArray(在本例中为stepsPerDay)中添加一个对象,以便以后可以访问它?
答案 0 :(得分:1)
代码看起来很好。
我怀疑你忘了初始化stepsPerDay
。它应该是
NSMutableArray *stepsPerDay = [NSMutableArray array];
作为一个不相关的建议,您也可以考虑更现代的语法
[stepsPerDay addObject:@(numberOfSteps)];
答案 1 :(得分:0)
问题是,在我尝试使用数组的内容后,块总是会执行addObject,我想这是因为块是异步执行的。解决方案是让块调用一个与数组一起工作的函数,这样我就能保证在执行函数时对象会被添加到数组中。