如何跟踪我的日历和地图视图中Notes和Location的更改?在vIEwDIDLoad中加载它们很简单,但是如何跟踪所有更改,以便在用户重新访问地图视图时(例如),他/她也会看到最新的数据.
我解密的一种方法是在地图视图和日历视图中的NSManagedobjectContextObjectsDIDChangeNotification中监听通知.这似乎从托管上下文返回所有插入,删除和更新的对象,每次都有保存.我可以通过这些对象,看看是否需要更新我的观点.这就是我在想这样做:
在MapVIEwController vIEwDIDLoad中:
[[NSNotificationCenter defaultCenter] addobserver: self selector: @selector(objectChangednotificationReceived:) name: NSManagedobjectContextObjectsDIDChangeNotification object: context];
然后:
- (voID) objectChangednotificationReceived: (NSNotification *) notification{ NSArray* insertedobjects = [[notification userInfo] objectForKey:NSInsertedobjectsKey] ; NSArray* deletedobjects = [[notification userInfo] objectForKey:NSDeletedobjectsKey] ; NSArray* updatedobjects = [[notification userInfo] objectForKey:NSUpdatedobjectsKey] ; NSLog(@"insertObjects: %@",[insertedobjects description]); NSLog(@"deletedobjects: %@",[deletedobjects description]); NSLog(@"updatedobjects: %@",[updatedobjects description]); for (NSManagedobject *obj in insertedobjects) { if ([obj class] == [Location class]) { NSLog(@"adding a new location"); Location *locationObj = (Location *) obj; [self.mapvIEw addAnnotation: locationObj]; } }}
这似乎是对的吗?似乎很多冗余代码放入每个视图控制器,特别是如果我对多个NSManagedobject感兴趣的话.还有其他一些我失踪的技术吗?
解决方法 NSFetchedResultsController似乎符合您的要求.它将有效地管理核心数据的数据处理.您为日历视图控制器和地图视图控制器重新使用相同的提取请求. 总结以上是内存溢出为你收集整理的Objective-c – 最佳实践 – iOS中的NSManagedObjectContextObjectsDidChangeNotification全部内容,希望文章能够帮你解决Objective-c – 最佳实践 – iOS中的NSManagedObjectContextObjectsDidChangeNotification所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)