Быстрая проверка nil с использованием if-let с уровня класса - PullRequest
0 голосов
/ 30 марта 2020

Я использовал nested для проверки nils. Например, класс, который содержит имя и возраст

class Person {
    var name: String?
    var age: Int?
}

if let p = Person() as? Person {
    if let name = p.name {

    }
    if let age = p.age {

    }
}

Когда я не уверен, является ли переменная пустой / нулевой, необходимо ли использовать if let для всего и каждый раз? просто пытаюсь убедиться, что я делаю это правильно.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Вам не нужно ничего проверять

p = Person()

создание нового объекта Person без начальных значений означает, что все свойства равны нулю, поэтому следующие проверки не нужны, мы уже знаем, что они равны нулю

if let name = p.name {

if let age = p.age {

Я бы посоветовал вам добавить конструктор с параметрами, чтобы вы могли напрямую устанавливать свойства

Либо с обязательными значениями, чтобы потом не приходилось проверять nil

 init(name: String, age: Int) {
      self.name = name
      self.age = age
 }

или с необязательными значениями

 init(name: String?, age: Int?) {
      self.name = name
      self.age = age
 }

но тогда вам нужно проверить

var name: String?
var age: Int?
//...other code

let p = Person(name: name, age: age)
if let personName = p.name {

}
if let personAge = p.age {

}
0 голосов
/ 30 марта 2020

Вам нужно if-let только тогда, когда вам нужно проверить nil и использовать значение unwrapped . В противном случае вы можете просто проверить nil, используя оператор != или * 1007. * вывод уже.

let p = Person()
if p.name != nil {

}
if p.age != nil {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...