Безопасная распаковка необязательна с помощью команды guard, которая включена в init () - PullRequest
0 голосов
/ 25 сентября 2019

Я думаю, что, возможно, упустил из виду, как это работает, но у меня есть класс, которому нужно использовать глобальное необязательное значение в нескольких его методах, и сейчас я развернул его внутри каждого метода, но подумал, что могу просто развернуть значениев init ().Я делаю это неправильно или это сейчас, как это должно работать?- Спасибо.

let iCloudPath = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")


class iCloudManager {

    init() {
        guard let iCloudPath = iCloudPath else { return }
    }

    function1(){
        // uses iCloudPath but returns 'Value of optional type 'URL?' must be unwrapped to a value of type 'URL''
    }

    function2(){
        // uses iCloudPath but returns 'Value of optional type 'URL?' must be unwrapped to a value of type 'URL''
    }

}

1 Ответ

1 голос
/ 25 сентября 2019

Сохраните результат как собственность ваших объектов.А еще лучше использовать статическое свойство, а не глобальное.

class iCloudManager {
    static let defaultPath = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")

    let path: URL

    init?() {
        guard let path = iCloudManager.defaultPath else { return nil }
        self.path = path
    }

    func function1() {
        // uses self.path
    }

    func function2() {
        // uses self.path
    }
}
...