Dictionary 类型的计算属性的设置器

Posted

技术标签:

【中文标题】Dictionary 类型的计算属性的设置器【英文标题】:Setter for computed property of type Dictionary 【发布时间】:2019-05-03 16:05:09 【问题描述】:

我是 swift 新手,我正在使用 swift 4.0。我有一个具有 Dictionary 类型的计算属性的类。我正在为此属性使用 getter 和 setter。下面是我的属性 sn-p。

var responses:[String:Float] 
    get 
        let newresponses = self.calculateResponses(with: self.Range)
        return newresponses
    
    set 

    

我如何编写 setter 代码以便我可以更新特定键的值?例如,在我的一个函数中,我需要更新特定键的响应值。

self. responses[key] = newResponse 

谢谢。

【问题讨论】:

【参考方案1】:

你不能用计算属性来做到这一点。因为每次您尝试获取 responses 时,实际上都会得到 self.calculateResponses(with: self.Range) 的结果。

要解决这个问题,只需创建空字典

var responses = [String : Float]()

然后当你需要分配新值时使用这个

responses[key] = newResponse

或者如果您需要分配所有新字典,请使用此

responses = self.calculateResponses(with: self.Range)

【讨论】:

以上是关于Dictionary 类型的计算属性的设置器的主要内容,如果未能解决你的问题,请参考以下文章

《从零开始学Swift》学习笔记(Day 32)——计算属性

C#属性和字段

...mapState() 中定义的计算属性没有设置器

何时在计算属性设置器上使用方法,反之亦然?

错误:已分配计算属性,但没有设置器

已分配计算属性,但它没有设置器 - 切换组件