Есть ли способ проверить строки для Swift nil
и ""
в нем? В Rails я могу использовать blank()
для проверки.
Сейчас у меня есть это, но кажется излишним:
if stringA? != nil {
if !stringA!.isEmpty {
...blah blah
}
}
Ответы:
Если вы имеете дело с необязательными строками, это работает:
??
Оператор ноль сливающихся возвращает левую сторону , если это не-ноль, в противном случае она возвращает правую сторону.Вы также можете использовать его так, чтобы вернуть значение по умолчанию:
источник
Возможно, вы могли бы использовать предложение if-let-where:
Свифт 3:
Свифт 2:
источник
fatal error: unexpectedly found nil while unwrapping an Optional value
но моя константаstring
имеет строковые данные.if let string = string, !string.isEmpty { /* string is not blank */ }
guard let
- альтернатива, если вы хотите завершить поток управления под оператором. Однако здесь ничего не разворачивается в предложении where (! - это логическое отрицание)Если вы используете Swift 2, вот пример, который придумал мой коллега, который добавляет свойство isNilOrEmpty в необязательные строки:
Затем вы можете использовать isNilOrEmpty в самой необязательной строке
источник
where Wrapped:
должен указывать протокол, а не тип.isNilOrEmpty
чтобыhasValue
(или что - то в этом роде) и обратную логикуИспользуя
guard
заявлениеЯ некоторое время использовал Swift, прежде чем узнал об этом
guard
заявлении. Теперь я большой поклонник. Он используется аналогичноif
оператору, но допускает ранний возврат и просто делает код намного чище в целом.Чтобы использовать защиту при проверке, чтобы убедиться, что строка не пуста и не пуста, вы можете сделать следующее:
Это разворачивает необязательную строку и сразу проверяет, не пуста ли она. Если оно равно нулю (или пусто), вы немедленно возвращаетесь из своей функции (или цикла), и все, что находится после него, игнорируется. Но если оператор защиты проходит, вы можете безопасно использовать развернутую строку.
Смотрите также
источник
nil
пуста или пуста, звонить не нужноprint(myString)
. Если вам нужно продолжить выполнение после anil
или emptyString
, вы должны использоватьif let
вместоguard
.В Swift 5 вы можете реализовать
Optional
расширение дляString
типа с помощью логического свойства, которое возвращается, если необязательная строка не имеет значения или пуста:Однако
String
реализуетisEmpty
свойство в соответствии с протоколомCollection
. Поэтому мы можем заменить родовое ограничение предыдущего кода ( вWrapped == String
) с более широким (одинWrapped: Collection
) , так чтоArray
,Dictionary
аSet
также воспользоваться нашим новымisNilOrEmpty
свойством:Использование с
String
s:Использование с
Array
s:Источники:
источник
isNilOrEmpty
вisEmptyOrNil
в соответствии с префиксом, чтобы его было легко найти с помощью того же шаблона для автозаполнения. Я заметил, что коллеги, с которыми я работаю, все чаще используют это расширение, просто потому, что они нашли его таким образом.источник
Я знаю, что на этот вопрос есть много ответов, но ни один из них не кажется таким же удобным, как это (на мой взгляд) для проверки
UITextField
данных, что является одним из наиболее распространенных случаев его использования:Вы можете просто использовать
Вы также можете пропустить,
.trimmingCharacters(in:.whitespaces)
если вы не рассматриваете пробелы как пустую строку или используете его для более сложных входных тестов, таких какисточник
Я бы порекомендовал.
map
применяет аргумент функции, если необязательный.Some
.Захват игровой площадки также показывает другую возможность с новым Swift 1.2, если разрешена дополнительная привязка.
источник
Если вы хотите получить доступ к строке как к необязательной, вам следует использовать ответ Райана , но если вы заботитесь только о непустоте строки, я предпочитаю сокращенную запись для этого
Поскольку
==
отлично работает с необязательными логическими значениями, я думаю, что это оставляет код читабельным, не скрывая первоначального намерения.Если вы хотите проверить обратное: если строка равна
nil
или""
, я предпочитаю явно проверить оба случая, чтобы показать правильное намерение:источник
SWIFT 3
Используйте это в необязательной строке:
источник
Swift 3 для проверки пустой строки лучший способ
источник
Вы можете создать свою собственную пользовательскую функцию, если от этого требуется много времени.
источник
Решение Swift 3 Используйте необязательное развернутое значение и сравните его с логическим значением.
источник
Использование isEmpty
Использование allSatisfy
Использование необязательной строки
Ссылка: https://useyourloaf.com/blog/empty-strings-in-swift/
источник
Создайте расширение класса String:
Обратите внимание, что это вернет ИСТИНА, если строка содержит один или несколько пробелов. Чтобы рассматривать пустую строку как «пустую», используйте ...
... вместо этого. Для этого требуется Foundation.
Используйте это так ...
источник
Swift 3 Это хорошо работает, чтобы проверить, действительно ли строка пуста. Потому что isEmpty возвращает true, когда есть пробел.
Примеры:
источник
Вы должны сделать что-то вроде этого:
if !(string?.isEmpty ?? true) { //Not nil nor empty }
Оператор объединения Nil проверяет, не является ли параметр nil, если он не равен nil, затем проверяет его свойство, в данном случае isEmpty. Поскольку этот необязательный параметр может иметь значение nil, вы указываете значение по умолчанию, которое будет использоваться, когда значение параметра optional равно nil.
источник
Это общее решение для всех типов, соответствующих
Collection
протоколу, которое включаетString
:источник
Когда я имел дело с передачей значений из локальной базы данных на сервер и наоборот, у меня было слишком много проблем с? И! И с чем нет.
Итак, я создал утилиту Swift3.0 для обработки нулевых случаев, и я могу почти полностью избежать? И! В коде.
Пример: -
Перед :
После :
и когда требуется проверить правильность строки,
Это избавило меня от необходимости добавлять и удалять многочисленные? И! После написания кода, который имеет разумный смысл.
источник
Используйте тернарный оператор (также известный как условный оператор
C++ forever!
):if stringA != nil ? stringA!.isEmpty == false : false { /* ... */ }
stringA!
Сила-разворачивание происходит только тогда , когдаstringA != nil
, так что это безопасно.== false
Подробность несколько более читабельным , чем еще один восклицательный знак в!(stringA!.isEmpty)
.Лично я предпочитаю немного другую форму:
if stringA == nil ? false : stringA!.isEmpty == false { /* ... */ }
В приведенном выше утверждении сразу очень ясно, что весь
if
блок не выполняется, когда выполняется переменнаяnil
.источник
полезно при получении значения из UITextField и проверке
nil
&empty
stringВот ваша функция (когда вы нажимаете на
button
), которая получает строку из UITextField и делает некоторые другие вещиЭто позаботится как о
nil
значении, так и оempty
строке.У меня это сработало отлично.
источник
На мой взгляд, лучший способ проверить нулевую и пустую строку - это подсчитать количество строк.
источник
вы можете использовать эту функцию
источник
nil
в эту функцию (кроме objc, и в этом случае она действительно выйдет из строя).