Почему мы можем вернуться из свойства объекта didSet? - PullRequest
0 голосов
/ 25 апреля 2018

Когда я создавал рекурсию в 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 ]

0 голосов
/ 25 апреля 2018

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

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

willSet(myNewValue) { }
didSet(myOldValue) { }
0 голосов
/ 25 апреля 2018

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

0 голосов
/ 25 апреля 2018

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

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

...