【发布时间】:2013-01-05 11:50:12
【问题描述】:
我使用NSFetchedResultsController (NSFRC) 在UITableView 中显示信息。我正在尝试为用户创建选项以按部分而不是按字母顺序对单元格进行排序。问题是,然后将使用下载的信息来确定这些部分。最重要的是,每个项目的部分将相对经常更改,因此我不想保存该部分。在我对类似问题的研究中,我注意到提到了瞬态属性,但在我不确定是否可以使用它们之前,我从未使用过这些属性,因为所有的计算都是在数据已经加载后完成的,并且我还希望这个解决方案与我之前的Core Data database 兼容。另外我在Core Data 方面也不是特别出色,(也不是Objective-C!)所以我不完全确定我将如何去做。
所以如果我们使用瞬态属性,这就是我想要的(下一点是理论上的,因为我不知道瞬态属性是否是正确的前进方式)。我想要 4 个可能的部分,0-3(我将使用 TableView delegate 重命名它们以解决排序问题)。计算完成后,将为每个单元格分配瞬态属性(如果需要,默认部分将为 2)。我希望这一切都有意义。
好的,现在是一些理论代码。首先,我在数据模型屏幕中创建瞬态属性,并通过选中瞬态复选框使其瞬态......听起来很简单。
在willDisplayCell 的计算代码中(出于几个原因需要在 wDC 中完成),实体可以这样保存:
MyEntity *myEntity = [self.fetchedResultsController objectAtIndexPath:indexPath];
myEntity.sectionTransientProperty = 2;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Error: %@", error);
FATAL_CORE_DATA_ERROR(error);
return;
}
完成了,对吧?这就是我们为瞬态属性赋值的方式吗?
然后我在分配时更改 NSFRC 中的排序选项:
fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"sectionTransientProperty"
cacheName:@"MyEntity"];
我们做得怎么样,我还需要做什么?还是我把这个弄错了,我应该放弃Core Data and NSFRC? 如果你们能帮助指导我完成这个,我真的很感激。如果您需要我发布更多代码,我很乐意。
问候,
迈克
【问题讨论】:
标签: ios objective-c