2014-01-06 2 views
0

Im пытается создать бесконечный тип прокрутки вещь с Instagram, используя UITableView и AFNetworking однако я получаю эту ошибку, когда я доберусь до дна Вид:Выпуск пейджинга с UITableView

CRASH : 
-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object 
2014-01-05 20:51:41.627 Floadt[1579:70b] STACK TRACE : 
(
    0 CoreFoundation      0x02b775e4 __exceptionPreprocess + 180 
    1 libobjc.A.dylib      0x027a38b6 objc_exception_throw + 44 
    2 CoreFoundation      0x02b773bb +[NSException raise:format:] + 139 
    3 CoreFoundation      0x02bfe365 -[__NSCFArray insertObject:atIndex:] + 101 
    4 CoreFoundation      0x02b3b2d0 -[NSMutableArray insertObjects:count:atIndex:] + 208 
    5 CoreFoundation      0x02b3af69 -[NSMutableArray insertObjectsFromArray:range:atIndex:] + 425 
    6 CoreFoundation      0x02b3ad15 -[NSMutableArray addObjectsFromArray:] + 661 
    7 Floadt        0x0003f5ec __42-[StreamViewController nextInstagramPage:]_block_invoke + 284 
    8 Floadt        0x0001edfb __64-[AFJSONRequestOperation setCompletionBlockWithSuccess:failure:]_block_invoke91 + 43 
    9 libdispatch.dylib     0x035247f8 _dispatch_call_block_and_release + 15 
    10 libdispatch.dylib     0x035394b0 _dispatch_client_callout + 14 
    11 libdispatch.dylib     0x0352775e _dispatch_main_queue_callback_4CF + 340 
    12 CoreFoundation      0x02bdca5e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14 
    13 CoreFoundation      0x02b1d6bb __CFRunLoopRun + 1963 
    14 CoreFoundation      0x02b1cac3 CFRunLoopRunSpecific + 467 
    15 CoreFoundation      0x02b1c8db CFRunLoopRunInMode + 123 
    16 GraphicsServices     0x0453c9e2 GSEventRunModal + 192 
    17 GraphicsServices     0x0453c809 GSEventRun + 104 
    18 UIKit        0x01936d3b UIApplicationMain + 1225 
    19 Floadt        0x0006646d main + 141 
    20 libdyld.dylib      0x037cb70d start + 1 
    21 ???         0x00000001 0x0 + 1 
) 

Вот как я делаю мой код, то, что меня смущает тот факт, что все мои Массивы Mutable но утверждает, что метод мутирует был направлен непреложным объект:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y == roundf(scrollView.contentSize.height-scrollView.frame.size.height)) { 
     NSDictionary *page = instagramResponse[@"pagination"]; 
     NSString *nextPage = page[@"next_url"]; 

     [[InstagramClient sharedClient] getPath:[NSString stringWithFormat:@"%@",nextPage] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 

      instagramResponse = [responseObject mutableCopy]; 
      [instagramResponse addEntriesFromDictionary:responseObject]; 
      [instaPics addObjectsFromArray:responseObject[@"data"]]; 
      [self.tableView reloadData]; 

     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"Failure: %@", error); 
     }]; 
    } 
} 
+0

Трассировка стека не лежит. Ищите вызов addObjectsFromArray: 'в методе блоков внутри' [StreamViewController nextInstagramPage:] '. Когда вы найдете имя массива, найдите места, где он может быть установлен на неизменяемый объект. –

ответ

1

перед тем addEntriesFromDictionary копию Dictionarylike этого

NSDictionary *copyOfDic = [[NSDictionary alloc] initWithDictionary: originalDic copyItems: YES]; 
if (copyOfDic) { 
    [destination addEntriesFromDictionary: copyOfDic ]; 
    [copyOfDic release]; 
} 

или

[instaPics addObjectsFromArray:[responseObject[@"data"]mutable copy]]; 

или

Ваш @property yourarray либо инициализируется NSArray или заявленной копии.

потому что оба будут связаны с этим сообщением об ошибке/исключении, так как поддерживающий ivar укажет на (неизменный) NSArray.

Если вы заявили, что ваша собственность имеет тип NSMutableArray, используйте сильную модификатор хранилища вместо копии.

+0

Я попытался сделать то, что вы заявили, но я получаю ту же ошибку. NSMutableArray был уже сильным. – Prad

+0

В какой строке вы получите исключение, вы пытаетесь с NSZombie. дайте мне знать – codercat

+0

Ошибка возникает в строке '[instaPics addObjectsFromArray: responseObject [@" data "]];' Я отредактировал способ, которым я пытаюсь выполнить страницу в приложении – Prad

Смежные вопросы