- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法弄清楚为什么当我向底层数据存储添加数据时,NSFetchedResultsControllerDelegate 方法没有触发。如果我重新启动 iPhone 应用程序,数据会立即显示。
我已经子类化了 UITableViewController 并符合 NSFetchedResultsControllerDelegate:
@interface ProjectListViewController : UITableViewController <NSFetchedResultsControllerDelegate> {
NSFetchedResultsController* fetchedResultsController_;
NSManagedObjectContext* managedObjectContext_;
}
我实例化 NSFetchedResultsController 并将委托(delegate)设置为 self:
// Controller
fetchedResultsController_ = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"Client"
cacheName:@"ProjectsCache"];
fetchedResultsController_.delegate = self;
我实现委托(delegate)方法:
- (void)controllerWillChangeContent:(NSFetchedResultsController*)controller {
NSLog(@"ProjectListViewController.controllerWillChangeContent");
// The fetch controller is about to start sending change notifications, so prepare the table view for updates.
[self.tableView beginUpdates];
}
- (void)controllerDidChangeContent:(NSFetchedResultsController*)controller { ... }
- (void)controller:(NSFetchedResultsController*)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { ... }
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id<NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type { ... }
我创建了我想要保存的实体:
Project* newProject = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
ProjectDetailViewController* detail = [[ProjectDetailViewController alloc] initWithStyle:UITableViewStyleGrouped
delegate:self
selector:@selector(finishedAdding:)
project:newProject];
然后,我保存它:
- (void)save {
// NSLog(@"ProjectDetailViewController.save");
self.project.name = projectNameTextField_.text;
NSError* error;
BOOL b = [self.project.managedObjectContext save:&error];
if (!b) {
NSLog(@"Error saving project!");
} else {
NSLog(@"Project was successfully saved.");
[delegate_ performSelector:selector_ withObject:self.project];
}
[self dismissModalViewControllerAnimated:YES];
}
除了我的委托(delegate)方法不触发之外,一切都工作得很好。显然我的表格 View 没有更新,查看新数据的唯一方法是显式刷新或重新启动应用程序。
我浏览了 CoreData Recipe 应用程序 - 但似乎找不到我缺少的内容。想法?
-路德
最佳答案
如果我在创建原始 fetchedResultsController_
时将 sectionNameKeyPath
从 @"Client"更改为 nil,则 Project
实体创建和保存确实调用了委托(delegate)方法!
fetchedResultsController_ =
[[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:@"ProjectsCache"];
经过严格审查,这就是 CoreData Recipes 示例的作用。随着我的数据变得越来越复杂 - 我认为我将需要该参数来帮助将结果分成几个部分,但现在,很高兴看到委托(delegate)处理程序被调用。
关于iphone - NSFetchedResultsControllerDelegate 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1319940/
我无法弄清楚为什么当我向底层数据存储添加数据时,NSFetchedResultsControllerDelegate 方法没有触发。如果我重新启动 iPhone 应用程序,数据会立即显示。 我已经子类
我是 iOS (Swift) 的新手,正在尝试了解 NSFetchedResultsControllerDelegate 机制。我特别不明白的是 NSFetchedResultsChangeType
我的 viewWillAppear 方法中有这个 [RPCoreData getFetchedControllerForCategoryDiscoverDelegate:self completio
NSFetchedResultsControllerDelegate 的文档提供了以下示例代码 - (void)controller:(NSFetchedResultsController *)con
我想在 CollectionViewController 中使用 NSFetchedResultsControllerRelegate。因此,我只是更改了 CollectionView 的 Table
我在 Xcode 收到以下警告,但不知道原因。欢迎任何帮助。 Assigning to 'id' from incompatible type 'CollapsableTableViewViewCo
据我了解,NSFetchedResultsController 负责将数据从托管对象上下文同步到 TableView Controller 。代表在这里的作用是什么?我阅读了苹果文档并没有得到它。请简
我正在尝试为实现 NSFetchedResultsControllerDelegate protocol 的 View Controller 编写单元测试。 .实现的第一个测试(在此 View Con
问候 Stack 的公民,当尝试覆盖“controllerDidChangeContent”时,我得到“方法不会覆盖其父类(super class)中的任何方法”。该 stub 由自动完成处理程序生成
在阅读了大量 Core Data 框架的文档和示例之后,我仍然不太明白。发生的情况是我有点理解示例代码或文档的部分内容,但通常无法将其放入更大的图片中。第二次读同样的代码,和第一次一样,还是需要很多时
这是我对委托(delegate)的实现: func controllerWillChangeContent(_ controller: NSFetchedResultsController) {
我正在使用一些在 UITableView 中实现 NSFetchedResultsControllerDelegate 的样板代码。当我执行远离 TableView 的 segue 时,将调用此委托(
我正在结合 NSFetchedResultsController 实现 UITableViewController。当 UITableViewController 实例化时,基于用户在前一个 Cont
前提:我有一个符合NSFetchedResultsControllerDelegate的UITableViewController。我还有一个获取结果 Controller 和托管对象上下文作为 Co
这是我的代码: class FetchResultControllerDataProvider: NSObject, NSFetchedResultsControllerDelegate {
我目前正在开发一个基于 CoreData 的 iPhone 应用程序,它的 map View 将从 生成其注释。 NSFetchedResultsController . map View 的想法是它
我有一个示例应用程序,它有一个带有单个属性的 NSManagedObject(我们称类为 CustomObject)。 该应用程序有一个简单的用户界面,由一个带有 UICollectionView 的
我正在尝试在 UITableView 中使用 NSFetchedResultsController。但是由于某些原因,当我添加一个新条目时,NSFetchedResultsControllerDele
我在 .h 中定义了一个 UITableViewController,如下所示: @interface PartsSearchViewController : UITableViewControlle
我喜欢使用 CoreData 根据数据库中的创建日期填充记录,所以我使用 NSFetchedResultsControllerDelegate 来获得良好的功能,正如我添加的那样: @interfac
我是一名优秀的程序员,十分优秀!