- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
[编辑] 在更精确地指出问题之后,我正在更改它以更简洁地解释我的问题是什么。
我正在为我的应用处理核心数据,但我很困惑。它每次都卡在这个方法中。没有崩溃,没有日志,什么都没有。它只是挂起。
- (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/
在过去的几个小时里,我一直在努力找出为什么 insertNewObjectForEntityForName 返回 NSManagedObject 即使我正在尝试插入我的实体自己的类型。 我已经检查过一
我使用 Xcode .xcdatamodel 文件编辑器设置了一个实体。我创建了一个名为 Person 的实体,添加了一些属性,然后生成了一个 .m 文件来表示它。一切正常。 现在当我去写一行代码时:
我将 CoreData 与一个实体和该实体的两个属性一起使用。 实体: Binder 属性:名称、上次打开 、br>我可以毫无问题地插入实体的新对象,我也可以设置它的名称,但我无法设置它的 lastO
在数据库中插入数据时,我在核心数据中遇到了错误的访问问题,我还使用了 @try、@catch block ,但我找不到任何解决方案。我被困了 3 天,所以请帮助我解决这个问题或给我任何建议。 - (B
我正在尝试将一个可用的 CoreData 应用程序移植到 Swift。此代码失败: let moc = self.context NSLog("Entities: \(moc.pers
我只想将单个 Color 对象添加到我的 Core Data 存储中。我最好怎么做? 我可以这样做: Color *color = [NSEntityDescription insertNewObje
我一直在使用 Core Data,因为它是为 iOS 发布的,但我无法弄清楚我的一个实体的 insertNewObjectForEntityForName 方法调用发生了什么。当调用该方法时,它只返回
我有一个 AEUser 类,它是 NSManagedObject 的一个子类。该类有一个创建自身新实例的方法。对于默认目标,正常路由效果很好: static func newDefaultUser(m
我正在尝试将一些 RubyMotion 代码移至 Swift。到目前为止它有效。我不明白的是为什么不能将以下结果转换为 Document 类: var newObject : NSManagedObj
我对 CoreData 比较熟悉,并且已经使用它好几年了,几乎没有任何困难。突然间,我被一个错误弄得目瞪口呆。对于我的一生,我无法弄清楚为什么 insertNewObjectForEntityForN
我为我遇到的问题编写了一个最小的代码示例。我通过两种方式实现后台工作:手动生成线程和让 NSOperation 处理线程。在这两种情况下,我都为每个线程/操作创建NSManagedObjectCont
我的核心数据堆栈中有一个简单的实体(称为日记)。该实体有一个属性(名称) 我使用编辑器生成了 NSManagedObject 子类。我还确保类名称遵循 appName.DiaryEntry 格式 xc
我正在使用 objC 的核心数据书中的代码,但在尝试使用以下代码(NSManagedObjectContext 的扩展)将新对象插入托管对象上下文时遇到了一个奇怪的错误: /** Helper me
我有一个相当奇怪的案例,在尝试使用 Swift 时出现核心数据错误。我不确定它是来自 Swift(测试版错误?)还是我。但是,这是我的测试用例的设置(在 VTModelTests.swift 中)。
我相对精通 CoreData 并且已经使用它好几年了,几乎没有困难。对于我的生活,我无法弄清楚为什么 insertNewObjectForEntityForName:inManagedObjectCo
这个问题已经有答案了: How can I create instances of managed object subclasses in a NSManagedObject Swift exten
我会尝试揭露我的问题,因为它有点复杂。我使用 Core Data,但存储的数据有问题。当我使用这段代码时: NSManagedObjectContext *context = [appDelegate
[编辑] 在更精确地指出问题之后,我正在更改它以更简洁地解释我的问题是什么。 我正在为我的应用处理核心数据,但我很困惑。它每次都卡在这个方法中。没有崩溃,没有日志,什么都没有。它只是挂起。 - (vo
我在一个运行了很长时间的应用程序中发生了一个非常奇怪的错误。 我无法再在我的 CoreData 模型中创建我的实体之一。 当我在我的模型中创建一个特定实体并尝试使用 NSLog(@"%@", obj)
我是一名优秀的程序员,十分优秀!