Swift: как проверить, существует ли переменная

Я пытаюсь проверить, существует ли переменная (или, вернее, определенный индекс массива) в Swift.

Если я использую

if let mydata = array[1] {

Я получаю сообщение об ошибке, если индекс имеет значение, и сбой, если его нет.

Если я использую

if array[1] != nil {

Я получаю предупреждения компилятора и / или сбои.

По сути, я просто пытаюсь получить аргументы командной строки (которые являются любым именем файла) и проверить, были ли они включены или нет. Все примеры аргументов командной строки, которые я видел, используют операторы switch / case, но для проверки известного текста, а не для изменения имен файлов.

Я все еще получаю Индекс из ошибок диапазона в XCode со следующим:

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

4 ответа

Решение
if index < myData.count {
  // safe to access 
  let x = myData[index]
}

Попробуй это:

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:] всегда возвращает значение, если существует, или nil, если не существует.

Просто, чтобы проверить индекс:

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

let data = array[index]

}

Ты можешь использовать 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.

Проверьте его документацию для получения дополнительной информации.

Другие вопросы по тегам