gpt4 book ai didi

database - NSFetchedResultsController 委托(delegate)方法在 insertNewObjectForEntityForName 上无限次调用 :inManagedObjectContext:

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

[编辑] 在更精确地指出问题之后,我正在更改它以更简洁地解释我的问题是什么。

我正在为我的应用处理核心数据,但我很困惑。它每次都卡在这个方法中。没有崩溃,没有日志,什么都没有。它只是挂起。

- (void)insertNewObject:(id)sender
{
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

Section *newSection = (Section *)newObject;
newSection.title = @"inserted";


NSError *error = nil;

if (![context save:&error]) {

NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}

NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

我发现如果我把 NSLogs 放在这两个委托(delegate)方法中:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

他们只是不停地被调用无数次。

最佳答案

好的,我想通了。我正在创建一个无限循环。

此委托(delegate)方法被调用:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller

然后这最终被调用,因为我调用了 [self.tableView beginUpdates];在委托(delegate)方法中。

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath

{
Section *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
object.title = [NSString stringWithFormat:@"Chapter %i", indexPath.row];
cell.textLabel.text = object.title;

}

然后这个委托(delegate)方法:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

问题是我实际上在更新内容时更改了 NSManagedObject 的属性

object.title = [NSString stringWithFormat:@"Chapter %i", indexPath.row];

这导致 controllerWillChangeContent: 再次被调用,创建一个循环往复的循环。

关于database - NSFetchedResultsController 委托(delegate)方法在 insertNewObjectForEntityForName 上无限次调用 :inManagedObjectContext:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848162/

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