0

我想将一个 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),以便以后可以访问它?

4

2 回答 2

1

代码看起来不错。我怀疑你忘了初始化stepsPerDay。它应该是

NSMutableArray *stepsPerDay = [NSMutableArray array];

作为不相关的建议,您还可以考虑使用更现代的语法

[stepsPerDay addObject:@(numberOfSteps)];
于 2013-10-07T15:56:15.387 回答
0

问题是,在我尝试处理数组的内容之后,该块总是会执行 addObject,我猜是因为该块是异步执行的。解决方案是让块调用一个与数组一起工作的函数,这样我可以保证在执行函数时对象会被添加到数组中。

于 2013-10-19T15:06:38.960 回答