Доступ к необязательному свойству в нескольких функциях для расчетов - Swift

У меня есть подкласс NSObject. Скажи CityWalks

класс CityWalks{ var totalCount:Int? }

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

пример:

let aObject =

скажем, в одной функции (function1()), мне нужно получить доступ к этому значению, то он хотел бы (aObject!.totalCount ?? 0)

func function1(){
 ...Some Access code for the object....
 (aObject!.totalCount ?? 0)
}

Точно так же в любой другой функции (function2()) мне придется написать один и тот же код.

func function2(){
 ...Some Access code for the object....
 (aObject!.totalCount ?? 0)
}

Итак, что может быть лучшим подходом для такого поля, учитывая, что это свойство может получать значение с сервера или нет.

2 ответа

Если у вас есть значение по умолчанию для этого свойства, просто назначьте это значение как значение по умолчанию.

class YourClass {
   var totalCount  = 0
}

Я бы порекомендовал вам избегать использования дополнительного значения, если это возможно. Поскольку необязательные значения это первое место, когда вы можете получить ошибку.

Как указано в комментариях и другой ответ с использованием необязательных не совсем оптимальным в вашем случае. Похоже, вы могли бы также использовать значение по умолчанию 0.

Однако, чтобы уточнить, вы должны проверить значение при развертывании необязательного. Иногда можно передать необязательный элемент в UIElement и т. Д., И тогда вам не нужно ничего делать с ними

Существуют красивые способы проверки nil в необязательных значениях, встроенных в swift, так что вы можете создавать довольно аккуратный код, даже если вы работаете с необязательными.

Заглянуть в guard let а также if let если вы хотите узнать больше о развертывании значений безопасно.

если позволить

if let totalWalks = aObject?.totalCount {
    //operate on totalWalks
}

охрана

guard let totalWalks = aObject?.totalCount else { return }
//operate on totalWalks

Есть также случаи, когда вы захотите вызвать функцию с необязательным значением, и в этом случае вы можете сделать это с ?

aObject?.doSomething()

Любые возвращаемые значения, которые может иметь эта функция, теперь будут заключены в необязательные значения, и вам, возможно, придется развернуть их также с помощью if let или же guard

При работе с опциями вы должны стараться не заставлять распаковывать ! как будто вы на данный момент знаете, что значение не является нулевым, что может после изменения в коде больше не быть истинным.

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