returns a fatal error : Index out of range when executing the function getBArrayList()

returns a fatal error : Index out of range when executing the function getBArrayList()

func getBArrayList(index: Int, array:[NSDictionary] ) -> [ 
NSDictionary]{
        var barray:[NSDictionary] = []
        for i in 0 ..< array.count
        {
           if array[i] == array[index]
            {
                break
            }

            barray[i] = array[i]


        }
        print(barray)
        return barray
    }

 minuscurent = getBArrayList(index: arrayindex, array: minuscurent)

当 array[i ] 等于 array[index] 我想中断 for 循环的执行并继续下一个值

barray 被初始化为空数组,没有元素。在线:

barray[i] = array[i]

您正在尝试访问其第 i 个元素,但数组中没有任何元素。这就是崩溃的原因。

使用以下内容将这些元素添加到 barray:

barray.append(array[i])

此外,我相信使用以下方法来测试相等性就足够了:

if i == index

而不是:

if array[i] == array[index]

更新

现在我不是 100% 确定您要实现的目标,但您似乎只是想从 minuscurent.[=22= 中删除索引 arrayindex 之后的所有元素]

minuscurent = getBArrayList(index: arrayindex, array: minuscurent)

如果真是这样,你就不用自己实现了,直接用:

minuscurrent = minuscurrent.prefix(arrayindex)

如果目标是只删除一个元素,请再次使用标准实现:

minuscurrent.remove(at: arrayindex)

如果 NSDictionary 的对象没有被初始化,或者换句话说,如果你没有为数组提供内存,那么你不能将它直接分配给数组。

You should practise to use barray.append(array[i]) instead of directly assigning the object to array.

  • 并且,您可以使用它来始终从 0 索引开始,而不是初始化空数组,而不是 0 将被空数据占用。

     var barray = [NSDictionary]()
    

试试这个函数,我认为不需要循环你可以使用 ArraySlice https://developer.apple.com/documentation/swift/arrayslice

func getBArrayList(index: Int, array:[NSDictionary] ) -> [NSDictionary] {
      var barray:[NSDictionary] = []
      if index >= 0 && index < array.count {
          barray.append(contentsOf: array[0..<index])
      }
      return barray
}