我有一个实体,它是NSManagedObject的一个子类,叫做Event.我还为KVO更改通知注册了此实体的一些建模属性:
[self.event addObserver:self
forKeyPath:@"numGuests"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:&numGuestsContext];
[self.event addObserver:self
forKeyPath:@"checkedIn"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:&checkedInContext];
[self.event addObserver:self
forKeyPath:@"seatedCount"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:&seatedContext];
Run Code Online (Sandbox Code Playgroud)
然而,即使更改字典中的NSKeyValueChangeOldKey和NSKeyValueChangeNewKey的值相等,似乎也会触发observeValueForKeyPath方法通知.
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSNumber *oldValue = [change valueForKey:NSKeyValueChangeOldKey];
NSNumber *newValue = [change valueForKey:NSKeyValueChangeNewKey];
if ([oldValue isEqualToNumber:newValue])
{
return;
}
Run Code Online (Sandbox Code Playgroud)
现在我已经采取了快速的健全性检查来确定它们是否相等,但我想了解为什么这个通知开始被解雇?
更新:@jszumski在评论中提到这很有可能发生,因为虽然逻辑上相同,但对象是不同的.Event实体对象总是具有相同的地址,但是我观察的对象(实体中的属性)不断更改地址,但我不确定为什么?
我想知道在bg查询线程中访问此值是否会导致Core Data在具有相同值的实体中创建新的内部对象?
我期待创建一个具有以下功能的表:
我见过人们使用不同的策略来完成类似的功能,包括:
有没有人有任何关于要查看什么的示例/建议/建议,相对容易起床和运行,滚动性能好,灵活.
我仍然处于计划阶段,试图找出最好的方法来解决这个问题,并且已经提出了一些想法,其中包括两个同步滚动的uitableviews.左表视图将用于锁定列,右表将用于水平滚动表.两个表都将使用相同的uiviews作为tablecells,每个列都有自定义uiview对象.

UPDATE
能够同步锁定列和水平滚动表之间的滚动似乎非常简单,到目前为止,这似乎是我倾向于的选项(上面#2).有没有人看到这种方法有任何潜在的陷阱或障碍?
我所追求的理想成品的一个很好的例子可以在Roambi App中找到(截图如下)

谢谢
我在应用程序中使用核心数据来存储可能拥有多达 50k 或更多对象的实体。我将其与表视图中的 NSFetchedResultsController 配对。由于单元格重用,表视图工作正常,但我最大的问题是查询实际数据库以获取数据集。
当我第一次加载表视图时,我需要数据库的所有结果。我使用带有单个排序描述符的默认获取请求,并将批量大小设置为 1,000。在 iPad 2 上,此查询最多需要15 秒才能完成!我还必须在搜索取消后运行此查询,因此总的来说,它使应用程序无法使用。我的假设是 CD 仍然必须解决所有这些结果或设置部分或其他内容,我真的不知道,但仅使用 batchSize 没有帮助?内容也非常动态,因为总是添加新行、更改排序顺序等。因此缓存的好处有限。
我现在认为最好的选择是在 fetchRequest 中使用 fetchLimit,然后实现一些基本的分页。当表视图滚动到末尾时获取下一个“页面”结果?这种方法的唯一问题是我丢失了sectionIndex,并且我想不出任何解决方法。
有人有任何想法或已经处理过这个问题吗?
我收到以下错误消息:
CoreData: error: (NSFetchedResultsController) The fetched object at index 5 has an out of order section name 'James. Objects must be sorted by section name'
Unresolved search error Error Domain=NSCocoaErrorDomain Code=134060 "The operation couldn’t be completed. (Cocoa error 134060.)" UserInfo=0xaa07530 {reason=The fetched object at index 5 has an out of order section name 'James. Objects must be sorted by section name'}, {
reason = "The fetched object at index 5 has an out of order section name 'James. Objects must …Run Code Online (Sandbox Code Playgroud)