Swift – 属性上的定制设置器

前端之家收集整理的这篇文章主要介绍了Swift – 属性上的定制设置器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将项目转换为Swift代码,并在设定者中遇到问题。我的Objective-C代码看起来像这样:
- (void)setDocument:(MyDocument *)document
{
    if (![_document isEqual:document]) {
        _document = document;

        [self useDocument];
    }
}

并允许我的View Controller在每次设置文档时运行(通常在演示View Controller的prepareForSegue:方法中)。

我发现属性观察者willSet和didSet,但它们只在属性被更新时才起作用,而不是在初始化和更新时。

有任何想法吗?谢谢

UPDATE

尝试获取{}并设置{}后,我得到EXC_BAD_ACCESS错误

var document: UIDocument? {
    get {
        return self.document!
    }
    set {
        self.document = newValue

        useDocument()
    }
}
你不能使用这样的设置,因为当你调用self.document = newValue时,你只是再次调用setter;你创建了一个无限循环。

您需要做的是创建一个单独的属性来实际存储值:

private var _document: UIDocument? = nil
var document: UIDocument? {
    get {
        return self._document
    }
    set {
        self._document = newValue
        useDocument()
    }
}

猜你在找的Swift相关文章