1

我在 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 是一个问题吗?是因为这个数组是在一个块中创建的,因此可以被视为可能仍然“开放更改”吗?我以前在我们的项目中看到过这样的代码,似乎没有问题。

谢谢任何帮助

4

1 回答 1

6

这是因为 NSArray *items 已经是一个指向数组的指针,*items 试图找到一个指向指针的指针,但事实并非如此。

只需更换:

for(Item *thisItem in *items){

和:

for(Item *thisItem in items){
于 2013-08-12T00:24:18.383 回答