Swift:如何检查变量是否存在

ben*_*ggy 1 arrays null-check swift

我正在尝试检查Swift中是否存在变量(或更确切地说是数组的特定索引)。

如果我用

if let mydata = array[1] {
Run Code Online (Sandbox Code Playgroud)

如果索引具有值,则会出现错误,如果索引没有值,则会崩溃。

如果我用

if array[1] != nil {
Run Code Online (Sandbox Code Playgroud)

我收到编译器警告和/或崩溃。

本质上,我只是试图获取命令行参数(可以是任何文件名)并检查是否包含了这些参数。我见过的所有命令行参数示例都使用switch / case语句,但是要检查已知文本,而不是更改文件名。

我仍然在Xcode中使用以下内容获取索引超出范围错误:

if arguments.count > 1 {
    var input = arguments[2]
} else {
}
Run Code Online (Sandbox Code Playgroud)

eli*_*ar4 5

尝试这个:

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

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

然后:

if let value = array[safe: 1] {
    print(value)
}
Run Code Online (Sandbox Code Playgroud)

现在您甚至可以:

textField.text = stringArray[safe: anyIndex]
Run Code Online (Sandbox Code Playgroud)

这不会导致崩溃,因为textField.text可以为nil,并且[safe:]下标始终返回value(如果存在)或nil(如果不存在)