在ios tableview中,为什么节是NSIndexSet?
我是iOS开发的新手,所以这个问题很愚蠢,但我确实很难弄清楚以下代码是如何工作的:在ios tableview中,为什么节是NSIndexSet?,ios,objective-c,uitableview,nsindexset,Ios,Objective C,Uitableview,Nsindexset,我是iOS开发的新手,所以这个问题很愚蠢,但我确实很难弄清楚以下代码是如何工作的: -(void)controller:(NSFetchedResultsController *)controller didChangeSection:(id<NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type{
-(void)controller:(NSFetchedResultsController *)controller didChangeSection:(id<NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type{
if (type==NSFetchedResultsChangeDelete) {
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
为什么NSIndexSet在这里表示节?此外,在本例中,sectionIndex只是一个数字,它是否使NSIndexSet成为只有一个数字的集合?如果它只有一个数字,为什么不使用int来表示它呢
谢谢。NSIndexSet是唯一无符号整数的不可变集合,优化用于存储数据结构的索引。deleteSections方法:将NSIndexSet作为其参数,因为它允许程序员传递一组索引以进行删除。在这种情况下,您只想删除一行,因此只需传递一个包含一个成员的NSIndexSet
更多信息:,。NSIndexSet是唯一无符号整数的不可变集合,优化用于存储数据结构的索引。deleteSections方法:将NSIndexSet作为其参数,因为它允许程序员传递一组索引以进行删除。在这种情况下,您只想删除一行,因此只需传递一个包含一个成员的NSIndexSet
进一步信息:,。首先,NSIndexSet是什么。NSIndexSet是一种非常有效的表示唯一整数集合的方法,其中许多整数可能是连续的 假设你想表达[1,2,3,4,5,10,11,12,13,14,15]。可以用[{1,5},{10,6}]更紧密地表示,其中该符号表示两个范围,即,如果将NSMakeRange1,5和NSMakeRange10,6放在一起,会得到什么 他们本可以要求一个NSNumber数组,但将其作为NSIndexSet来执行可以保证每个条目的唯一性—它是一个集合,并允许极大的存储和计算效率 他们不可能要求一个Int数组,因为你不能把Int放入NSArray;它必须是一个对象。同样,这增加了NSIndexSet的效率-无需打开所有这些NSNUMBER!NSNumber数组是传递此信息的一种非常低效的方式
现在来回答你的问题:它不必只有一个数字!请注意名称:deleteSections:。看到尽头的s了吗?您可以在一个命令中删除多个节。在这种情况下,您恰好只删除了一个部分,这一点与问题无关。因此不会损失任何效率。首先,NSIndexSet是什么。NSIndexSet是一种非常有效的表示唯一整数集合的方法,其中许多整数可能是连续的 假设你想表达[1,2,3,4,5,10,11,12,13,14,15]。可以用[{1,5},{10,6}]更紧密地表示,其中该符号表示两个范围,即,如果将NSMakeRange1,5和NSMakeRange10,6放在一起,会得到什么 他们本可以要求一个NSNumber数组,但将其作为NSIndexSet来执行可以保证每个条目的唯一性—它是一个集合,并允许极大的存储和计算效率 他们不可能要求一个Int数组,因为你不能把Int放入NSArray;它必须是一个对象。同样,这增加了NSIndexSet的效率-无需打开所有这些NSNUMBER!NSNumber数组是传递此信息的一种非常低效的方式 现在来回答你的问题:它不必只有一个数字!请注意名称:deleteSections:。看到尽头的s了吗?您可以在一个命令中删除多个节。在这种情况下,您恰好只删除了一个部分,这一点与问题无关。并且不会因此而失去效率