错误 - 不能对不可变值使用变异成员:函数调用返回不可变值

时间:2016-10-29 18:24:44

标签: swift

所以我有这个自定义结构

public struct Feature {
var featureID: String = ""
var featureName: String = ""
var matchingFieldValue: String = ""

var polygonCollection =  [MyPolygon]()

mutating func setFeatureID(featureID: String) {
    self.featureID = featureID
}

func getMatchingFieldValue() -> String {
    return matchingFieldValue
}

mutating func setMatchingFieldvalue(matchingFieldValue: String) {
    self.matchingFieldValue = matchingFieldValue
}

public func getPolygonCollection() -> [MyPolygon] {
     return polygonCollection  
 }  

}

我试图通过调用此函数

将多边形附加到我的polygonCollection
feature.getPolygonCollection().append(polygon)

但我收到了错误

cannot use mutating member on immutable value: function call returns immutable value

顺便说一下,我在另一个类中定义了多边形,它是一个很长的类,所以只需输入相应的调用代码就可以得到错误。

所有先前提出的问题

我感谢所有的帮助。

1 个答案:

答案 0 :(得分:1)

由于值语义getPolygonCollection()返回polygonCollection的不可变副本。你无法改变它。这就是错误信息所说的内容。

在>结构

中添加此功能
mutating func add(polygon: MyPolygon) {
    self.polygonCollection.append(polygon)
}

并将其命名为

feature.add(polygon)