gpt4 book ai didi

iphone - 核心数据 - 在 vi​​ewDidLoad 之前调用数据源方法

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:16 25 4
gpt4 key购买 nike

我注意到我的应用程序出现问题是因为在 viewDidLoad 之前调用了 UITableView 的 Datasource 方法。

问题是 UITableView 没有正确的行数,它从 NSFetchedResultsController 而不是 performFetch 的“函数”在 viewDidLoad 方法中调用,由于某种原因,该方法在数据源方法之后调用。

下面是两个重要方法的来源:

- (void)viewDidLoad {
[super viewDidLoad];

self.tableView.allowsSelectionDuringEditing = NO;
self.tableView.editing = YES;
self.title = [NSString stringWithFormat:@"%@", [[game valueForKey:@"title"] description]];

NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}

如何解决这个问题?

最佳答案

正常的程序流程要求在任何 UITableView 数据源方法之前调用 -viewDidLoad。如果您以相反的顺序获取它们,那么您的代码库中有某些东西导致它们被乱序调用。

首先,在您在此问题中显示的两个方法中放置一个断点,并确认它们被乱序调用。

然后,当您处于 -tableView:numberOfRowsInSection: 断点时,查看堆栈跟踪并查看为什么它在 -viewDidLoad< 之前被调用.

更新

如链接中所示,-viewDidLoad 最先被调用。当您在该堆栈跟踪中选择 [PlayerViewController -viewDidLoad] 行时,它位于哪一行代码?如果它位于 [super viewDidLoad] 上,那么您的父类(super class)是什么?在做什么 -viewDidLoad

关于iphone - 核心数据 - 在 vi​​ewDidLoad 之前调用数据源方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com