gpt4 book ai didi

iphone - 为什么 "[self.tableView reloadData]"不能确保我看到刚刚添加到 UITableView 的数据的最新行? (包含代码)

转载 作者:行者123 更新时间:2023-12-03 20:46:41 25 4
gpt4 key购买 nike

为什么“[self.tableView reloadData]”不能确保我看到刚刚添加到 UITableView 的数据的最新行? (包含代码)即从 AddItem Controller 返回到此委托(delegate)方法之后:

  • 使用新值更新核心数据存储库
  • 调用:“[self.tableView reloadData]”
  • 关闭模态视图
  • 但是回到 UITableView 上,新行不存在了吗?
  • 当我在模拟器中停止并重新启动 iPhone 应用程序时,该行确实正确显示

为什么“reloadData”在这里对我不起作用,我该怎么办?

注意,我知道有一种方法可以通过 TableView 中的“insertRowsAtIndexPaths”手动创建新行。不确定哪种方法最好,但无论如何我想了解为什么 reloadData 在这里不起作用。

代码:

- (void)newItemController:(NewItemController *)controller didFinishWithSave:(BOOL)save newItemText:(NSString*)itemText 
{
// Add data to CoreData store
WEView *newWEView = (WEView *) [NSEntityDescription insertNewObjectForEntityForName:@"WEView" inManagedObjectContext:managedObjectContext];
newWEView.title = itemText;

NSError *error = nil;
if (![managedObjectContext save:&error]) {
// Handle the error.
DLog(@"ERROR DURING SAVE");
abort();
}

// Dismiss the modal view to return to the main list
[self dismissModalViewControllerAnimated:YES];

// Reload Data
[self.tableView reloadData];
}

谢谢

PS。这是我用来填充 tableview 数据实例变量的代码:

- (void)updateTableDataViaCoreData 
{
// Core Data Request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"WEView" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];

// CoreData Sort Descriptor
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];

// Core Data - Execute Request
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
DLog(@"Error when fetching data");
abort();
}

// Core Data finish Up
[self setViewConfigArray:mutableFetchResults];
[mutableFetchResults release];
[request release];
}

最佳答案

从您的代码示例来看,您似乎已经使用了推荐的 Core Data 方法,其中有一个 NSFetchedResultsController 管理 TableView 的数据。如果是这种情况,那么您需要在调用 reloadData 之前告诉 tableview 的 fetchedresultscontroller 重新获取数据。

所以在reloadData之前,告诉你的NSFetchedResultsController重新获取数据

[[self frc] performFetch:&error];

将对象插入到托管上下文中不会使其可供 TableView 使用。

关于iphone - 为什么 "[self.tableView reloadData]"不能确保我看到刚刚添加到 UITableView 的数据的最新行? (包含代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5496381/

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