【问题标题】:Cocoa NSIndexSet : Multiple Indexes. How to create the index set, multiple indexes?Cocoa NSIndexSet :多个索引。如何创建索引集、多个索引?
【发布时间】:2011-05-10 19:19:42
【问题描述】:

我想弄清楚如何创建一组让我们说 (1, 2, 3) 的索引 然后在

中使用它
- (void)selectRowIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend

这是(NSIndexSet *)indexes 我不知道如何使用/创建/填充索引1、2、3。 我应该使用类方法还是实例方法?

我尝试了很多方法,但我不知道我在做什么......

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

    如果索引在您的示例中是连续的,您可以使用:

    NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)];
    

    如果没有,则创建一个可变索引集,并将索引(或范围)一一添加:

    NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
    [indexSet addIndex:3];
    [indexSet addIndex:5];
    [indexSet addIndex:8];
    

    【讨论】:

    • 根据您所写的内容,我一遍又一遍地阅读 NSIndexSet 的文档,直到我理解它们!我想最难的不是 Cocoa,而是学习代码文档的逻辑和精妙之处!
    • 我认为文档非常清楚。你遇到了什么问题?
    • NSMutableIndexSet 是救命稻草
    【解决方案2】:

    对于包含单个索引或一组可由范围表示的索引(即 1,2,3)的简单索引集,您可以使用 NSIndexSet 的 initWithIndex:initWithIndexesInRange: 方法(或其工厂方法对应)。如果要创建更复杂的索引集(即 1、5、7、8、9),则需要使用 NSMutableIndexSet 以便在创建对象后添加索引和范围。

    此代码将创建一个包含索引 1、2 和 3 的索引集:

    [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1,3)];
    

    请参阅 NSIndexSetNSMutableIndexSet 类引用。

    【讨论】:

      【解决方案3】:

      在 Swift 3 中

      let indexSet = IndexSet(integersIn: 1...3)
      

      或单个值:

      let indexSet = IndexSet(integer: 1)
      

      或者对于非连续值:

      var indexSet = IndexSet()
      indexSet.insert(1)
      indexSet.insert(3)
      indexSet.insert(9)
      

      【讨论】:

        【解决方案4】:

        这是一个在 NSMutableIndexSet 的帮助下从本地数组中删除选定索引的示例

        NSArray * arrSelectedSongs = [self.playListTblView indexPathsForSelectedRows];
         //Delete From Array
         NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc]init];
         for (NSIndexPath *indexPath in arrSelectedSongs)
         {
           [indexSet addIndex:indexPath.row];
         }
         [self.arrFiles removeObjectsAtIndexes:indexSet];
        

        【讨论】:

          【解决方案5】:

          还有

          [NSIndexSet indexSetWithIndex:1];
          

          【讨论】:

            猜你喜欢
            • 2020-05-23
            • 2015-03-17
            • 2016-01-10
            • 2012-12-11
            • 2019-06-24
            • 2022-01-08
            • 1970-01-01
            • 2016-04-14
            • 2023-03-23
            相关资源
            最近更新 更多