Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ios tableview中,为什么节是NSIndexSet?_Ios_Objective C_Uitableview_Nsindexset - Fatal编程技术网

在ios tableview中,为什么节是NSIndexSet?

在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{

我是iOS开发的新手,所以这个问题很愚蠢,但我确实很难弄清楚以下代码是如何工作的:

-(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了吗?您可以在一个命令中删除多个节。在这种情况下,您恰好只删除了一个部分,这一点与问题无关。并且不会因此而失去效率