在重新启动应用程序后,tableview不会显示tableview中的所有数据

时间:2012-12-26 08:32:08

标签: objective-c ios ipad uitableview nsfetchedresultscontroller

我的tableview有问题。我正在保存从核心数据库中的Web服务返回的所有数据。我实现了一个下拉刷新功能来刷新我的tableview。当应用程序启动时,第一次所有工作都很棒。所有数据都显示在tableview中,我可以根据需要刷新多次。

我遇到的问题是,当应用重新启动时,我希望它自动刷新tableview。所以我把它放在我的viewDidLoad中。

- (void)viewDidLoad
{
      [self checkForWIFIConnection];
    if (!self.genkDatabase) {
        NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
        url = [url URLByAppendingPathComponent:@"Default appGenk Database"];
        // url is now "<Documents Directory>/Default Photo Database"
        self.genkDatabase = [[UIManagedDocument alloc] initWithFileURL:url]; // setter will create this for us on disk
    }

     pull = [[PullToRefreshView alloc] initWithScrollView:(UIScrollView *) self.tableView];
    [pull setDelegate:self];
    [self.tableView addSubview:pull];
    [super viewDidLoad];
}

此方法将查看是否已创建数据库。在此方法之后,它将转到以下函数 UseDocument

- (void)useDocument
{
    if (![[NSFileManager defaultManager] fileExistsAtPath:[self.genkDatabase.fileURL path]]) {
        // does not exist on disk, so create it
        [self.genkDatabase saveToURL:self.genkDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
            NSLog(@"no database created yet");
             [self fetchNewsIntoDocument:self.genkDatabase];
           [self setupFetchedResultsController];
        }];
    } else if (self.genkDatabase.documentState == UIDocumentStateClosed) {
        // exists on disk, but we need to open it
        NSLog(@"closed");
        [self.genkDatabase openWithCompletionHandler:^(BOOL success) {
            if([self checkForData] == YES){
                NSLog(@"there is data in viewdidload");
                [self emptyNews];
                [self fetchNewsIntoDocument:self.genkDatabase];
            }
            [self setupFetchedResultsController];

        }];
    } else if (self.genkDatabase.documentState == UIDocumentStateNormal) {
        // already open and ready to use
        [self setupFetchedResultsController];
    }
}

这种方法要做的是查看文档的状态。重新启动应用程序后,文档将关闭。那么我将检查是否有数据。如果有的话,我将删除所有的全部内容再次进入数据库。这也有效。

问题 我现在的问题是它只显示屏幕上特定时刻的单元格。所以当我向下滚动时,我会得到空单元格。就像你在下面的截图中看到的那样。

enter image description here

我也遇到了这个错误。

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:1054
2012-12-26 09:34:54.831 Krc Genk[24584:c07] CoreData: error: Serious application error.  An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:.  Invalid update: invalid number of sections.  The number of sections contained in the table view after the update (0) must be equal to the number of sections contained in the table view before the update (1), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted). with userInfo (null)

希望有人能帮助我。

亲切的问候

1 个答案:

答案 0 :(得分:0)

错误定义明确,你应该知道你哪里出错了。 这是部门的数量。