【问题标题】:Create NSIndexSet from integer array in Swift在 Swift 中从整数数组创建 NSIndexSet
【发布时间】:2016-10-24 22:46:08
【问题描述】:

我使用https://stackoverflow.com/a/28964059/6481734 的答案将 NSIndexSet 转换为 [Int] 数组,我需要做相反的事情,将相同类型的数组转换回 NSIndexSet。

【问题讨论】:

    标签: ios swift2 nsarray nsindexset


    【解决方案1】:

    您可以使用NSMutableIndexSet 及其addIndex 方法:

    let array : [Int] = [1,2,3,4,5,7,8,10]
    print(array)
    let indexSet = NSMutableIndexSet()
    for index in array {
        indexSet.addIndex(index)
    }
    print(indexSet)
    

    【讨论】:

      【解决方案2】:

      斯威夫特 3

      IndexSet 可以使用init(arrayLiteral:) 直接从数组字面量创建,如下所示:

      let indices: IndexSet = [1, 2, 3]
      

      原始答案(Swift 2.2)

      类似于pbasdf's answer,但使用forEach(_:)

      let array = [1,2,3,4,5,7,8,10]
      
      let indexSet = NSMutableIndexSet()
      array.forEach(indexSet.add) //Swift 3
      //Swift 2.2: array.forEach{indexSet.addIndex($0)}
      
      print(indexSet)
      

      【讨论】:

      • 谢谢,但是如果我使用 reloadTableSection 是否对一个部分有效?
      • @BrunoFernandes 呃...什么?
      【解决方案3】:

      这在 Swift 3 中会容易得多:

      let array = [1,2,3,4,5,7,8,10]
      let indexSet = IndexSet(array)
      

      哇!

      【讨论】:

      • 更好的是,它可以从整数文字中分配。看我的回答
      • @AlexanderMomchliov 太好了,那更好。
      • 输入 IndexSet.init 并使用自动完成选项是看不到的,这很烦人。
      【解决方案4】:

      Swift 3+

      let fromRange = IndexSet(0...10)
      let fromArray = IndexSet([1, 2, 3, 5, 8])
      

      添加此答案是因为尚未提及 fromRange 选项。

      【讨论】:

        【解决方案5】:

        斯威夫特 4.2

        从现有数组:

        let arr = [1, 3, 8]
        let indexSet = IndexSet(arr)
        

        来自数组字面量:

        let indexSet: IndexSet = [1, 3, 8]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 1970-01-01
          • 2021-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多