【问题标题】:Data not loading into core data database数据未加载到核心数据数据库中
【发布时间】:2012-10-25 08:52:23
【问题描述】:

我正在尝试将一些数据放入数据库中。我也在其他视图中使用以下代码。有它的工作。但在这个观点上它不起作用。你可以看下面的代码。

- (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'

获取数据后,我用这些数据填充了一个表格视图。我认为这就是错误出现的原因。但是谁能告诉我怎么了?

亲切的问候。

【问题讨论】:

    标签: objective-c multithreading uitableview core-data grand-central-dispatch


    【解决方案1】:

    代码中的那一行:

    NSArray *klassement  = [GenkData getRanking]; 
    

    检查 getRanking 方法和分类数组。仅由于这条线而发生崩溃。

    为两者都写一个日志。希望它能解决您的问题。

    【讨论】:

    • 当我将这行代码放在我的 viewDidAppear 中并带有日志时。它会正确记录
    • 做一件事,在接口中添加一个类级别的 NSArray 变量并在您的 viewDidLoad 方法中分配它。然后使用 [GenkData getRanking] 为其赋值;方法。另外在分配之前放这行: NSLog(@"Found Data: %@",[GenkData getRanking]);以确保您从方法中获取数据。
    • 好的,谢谢。我已经尝试过了,该方法会返回数据。我认为这与 GCD 有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    相关资源
    最近更新 更多