Swift:如何检查变量是否存在(特别是数组的索引)

kokeuurv  于 2023-06-28  发布在  Swift
关注(0)|答案(4)|浏览(117)

我试图检查Swift中是否存在一个变量(或者更确切地说是数组的特定索引)。
如果我用

if let mydata = array[1] {

如果索引有值,我会得到一个错误,如果没有,则会崩溃。
如果我用

if array[1] != nil {

我收到编译器警告和/或崩溃。
本质上,我只是试图获取命令行参数(任何文件名),并检查它们是否已被包含。我见过的所有命令行参数的例子都使用switch/case语句,但是检查已知文本,而不是变化的文件名。
我仍然在Xcode中获取Index超出范围错误,如下所示:

if arguments.count > 1 {
    var input = arguments[2]
} else {
}
knpiaxh1

knpiaxh11#

试试这个:

extension Collection where Indices.Iterator.Element == Index {

    subscript (safe index: Index) -> Generator.Element? {
        return indices.contains(index) ? self[index] : nil
    }
}

然后:

if let value = array[safe: 1] {
    print(value)
}

现在你甚至可以做:

textField.text = stringArray[safe: anyIndex]

这不会导致崩溃,因为textField.text可以为nil,而[safe:] subscription在存在时总是返回value,在不存在时总是返回nil

mqxuamgl

mqxuamgl2#

if index < myData.count {
  // safe to access 
  let x = myData[index]
}
klsxnrf1

klsxnrf13#

简单,检查索引:

if index < array.count {
// index is exist

let data = array[index]

}
j0pj023g

j0pj023g4#

可以使用contains方法来检查数组中是否存在值。
例如:

let expenses = [21.37, 55.21, 9.32, 10.18, 388.77, 11.41]
let hasBigPurchase = expenses.contains { $0 > 100 } // hasBigPurchase is a boolean saying whether the array contains the value or not.

查看其documentation以了解更多信息。

相关问题