Почему мы можем вернуться из свойства didSet?

Когда я создавал рекурсию в didSet, я обнаружил, что могу просто поставить возврат и выход из программы из didSet. Но я нигде не нашел (долго искал), что могу поставить возвращаемое слово для выхода из didSet. Итак, разве набор работает как вычисляемое свойство, где мы можем вернуть значение? Пожалуйста, если кто-то знает что-нибудь, я был бы очень признателен. Спасибо.

 class AppDetailController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
var app : App? {
    didSet {
        if app?.screenshots != nil {
            return 
        }
        if let id = app?.id {
            let urlString = "https://api.letsbuildthatapp.com/appstore/appdetail?id=\(id)"
            URLSession.shared.dataTask(with: URL(string: urlString)!, completionHandler: { (data, response, error) in
                if error != nil {
                    print(error)
                }
                do {
                let json = try(JSONSerialization.jsonObject(with: data!, options: .mutableContainers ))
                    let appDetail = App()
                    appDetail.setValuesForKeys(json as! [String: AnyObject])


                   self.app = appDetail
                } catch let error as NSError {
                    print(error.localizedDescription)
                }
            }).resume()
        }

     }
}

3 ответа

Нет, didSet не имеет никакого отношения к вычисляемому свойству. На самом деле didSet {} а также willSet для сохраненных свойств, и они играют роль didChangeValue а также willChangeValue, Таким образом, вы можете изменить другие данные в вашем классе или структуре или запустить какой-либо метод в соответствии с изменением значения свойства, которое вы хотите определить didSet а также willSet для этого.

Они работают как функция и имеют свойство. newValue за willSet что дает вам новое значение будет установлено для вашей собственности и oldValue за didSet это дает вам старую стоимость вашей собственности до изменения ее стоимости. Вы можете изменить имя этих свойств следующим образом:

willSet(myNewValue) { }
didSet(myOldValue) { }

Вещь в фигурных скобках после срока willSet или же didSet это функциональное тело. Вы выходите из тела функции, говоря return,

didSet является наблюдателем свойства, и он вызывается каждый раз, когда в хранимом свойстве сохраняется новое значение.

Рассмотрим didSet как метод, возвращающий void. Вы проверяете условие в своем коде, если оно выполнено, вы можете вернуться, чтобы остальная часть кода не могла быть выполнена.

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