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 は問題ですか? この配列はブロックで作成されているため、まだ「変更可能」と見なされる可能性がありますか? 以前に私たちのプロジェクトでこのようなコードを見たことがありますが、問題はないようです。

任意の助けのためのthx

4

1 に答える 1

6

これは、NSArray *items が既に配列へのポインターであるためです。*items はポインターへのポインターを見つけようとしていますが、そうではありません。

置き換えるだけです:

for(Item *thisItem in *items){

と:

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