0

我試圖在數據庫中放入一些數據。我在其他視圖中也使用了以下代碼。它有效。但是在這個觀點上它不起作用。你可以看到下面的代碼。未將數據加載到核心數據庫中

- (void)fetchKlassementIntoDocument:(UIManagedDocument *)document 
{ 
     NSLog(@"log"); 
    dispatch_queue_t fetchKlassement = dispatch_queue_create("klassement fetcher", NULL); 
    dispatch_async(fetchKlassement, ^{ 
     NSLog(@"Log2"); 
     NSLog(@"log3"); 
     NSArray *klassement = [GenkData getRanking]; 
     [document.managedObjectContext performBlock:^{ 
     NSLog(@"klassement array %@",klassement); 
      for (NSDictionary *genkInfo in klassement) { 
      [Klassement klassementWithGenkInfo:genkInfo inManagedObjectContext:document.managedObjectContext]; 
       NSLog(@"inserted klassement"); 
      } 
      NSLog(@"Log4"); 
      [document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:NULL]; 
      NSLog(@"Log5"); 
     NSLog(@"Log 6"); 
     }]; 
    }); 
    NSLog(@"Log7"); 
    dispatch_release(fetchKlassement); 
    NSLog(@"Log8"); 
} 

這給出了以下錯誤日誌。

2012-10-25 10:50:07.527 RacingGenk[17989:907] log 
2012-10-25 10:50:07.528 RacingGenk[17989:907] Log7 
2012-10-25 10:50:07.529 RacingGenk[17989:907] Log8 
2012-10-25 10:50:07.531 RacingGenk[17989:4f03] Log2 
2012-10-25 10:50:07.532 RacingGenk[17989:4f03] log3 
2012-10-25 10:50:07.604 RacingGenk[17989:907] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array' 

獲取數據後,我用這些數據填充tableview。我認爲這就是錯誤出現的原因。但有人可以說我出了什麼問題嗎?

親切的問候。

回答

0

從您的代碼行:

NSArray *klassement = [GenkData getRanking]; 

檢查getRanking方法&的klassement陣列。由於這條線只發生崩潰。

爲兩者都寫一個日誌。希望它能解決你的問題。

+0

當我把這行代碼在我的viewDidAppear與日誌。它會正確記錄它 –

+0

做一件事,在接口中添加一個類級別的NSArray變量並將其分配到viewDidLoad方法中。然後使用[GenkData getRanking]將值分配給它。方法。另外在分配它之前放置這條線:NSLog(@「找到的數據:%@」,[GenkData getRanking]);確保您從方法中獲取數據。 – iCreative

+0

好的,謝謝。我已經嘗試過,並且該方法會返回數據。我認爲這與GCD有關。 –