从块返回的NSArray / NSMutableArray上的快速枚举

时间:2013-08-12 00:17:17

标签: objective-c

我在AFNetworking getPath调用的成功块中有以下内容:

+(void)allItemsWithBlock: (void (^)(NSArray *items)) block
{
   ...
   NSMutableArray *mutableItems = [NSMutableArray array];
   for (NSDictionary *attributes in [responseObject valueForKey:@"data"]) {
      Item *item = [[Item alloc] initWithAttributes:attributes];
      [mutableItems addObject:item];
   } 
   NSLog(@"here is a count: %i", [mutableItems count]);
   if(block){
      block(mutableItems);
   }

并且在传入的块中,我有以下内容但是将错误列为注释:

[Item allItemsWithBlock:^(NSArray *items){
    for(Item *thisItem in *items){  // The type 'NSArray' is not a pointer to a fast-enumerable object
      NSLog(@"in the block here");
    }
}];

我已经阅读了尝试快速枚举的内容,但我不确定问题是什么。是NSMutableArray - > NSArray有问题吗?是因为这个数组是在一个块中创建的,因此可能被视为可能仍然“开放变化”?我之前在项目中看到过这样的代码,似乎不是问题。

thx任何帮助

1 个答案:

答案 0 :(得分:6)

这是因为NSArray * items已经是一个指向数组的指针,* items试图找到一个指向指针的指针,而不是指针。

只需替换:

for(Item *thisItem in *items){

使用:

for(Item *thisItem in items){