Ios 无法分配给属性';观测时间';是一个只能获取的属性
我在尝试将observationTime设置为时间间隔时遇到此错误。我不知道为什么我可以设置属性,我在其他地方也是这样设置的Ios 无法分配给属性';观测时间';是一个只能获取的属性,ios,swift,object,getter-setter,Ios,Swift,Object,Getter Setter,我在尝试将observationTime设置为时间间隔时遇到此错误。我不知道为什么我可以设置属性,我在其他地方也是这样设置的 weatherReading?.observationTime = NSTimeIntervalSince1970 @objcMembers class WeatherThirdPartyReadings: NSObject { private var _temperature: Double private var _speed: Double
weatherReading?.observationTime = NSTimeIntervalSince1970
@objcMembers class WeatherThirdPartyReadings: NSObject {
private var _temperature: Double
private var _speed: Double
private var _direction: Double
private var _observationTime: Double
private var _isSummaryLoaded: Bool
var temperature: Double {
return _temperature
}
var speed: Double {
return _speed
}
var direction: Double {
return _direction
}
var observationTime: Double {
return _observationTime
}
var isSummaryLoaded: Bool {
return _isSummaryLoaded
}
init(temperature: Double, speed: Double, direction: Double, observationTime: Double, isSummaryLoaded: Bool) {
self._temperature = temperature
self._speed = speed
self._direction = direction
self._observationTime = observationTime
self._isSummaryLoaded = isSummaryLoaded
}
}
你需要
var observationTime: Double {
set {
_observationTime = newValue
}
get{
return _observationTime
}
}
就这样
var observationTime: Double {
return _observationTime
}
使其成为一个只读属性,get的3个默认实现
问题是,当您使用这种语法时,您是说公共属性只有一个getter,没有可用的setter。您还需要为属性创建setter
var observationTime: Double {
get {
return _observationTime
}
set {
_observationTime = newValue
}
}
除非您明确需要一个支持变量,因为您的帖子中没有指出的其他原因,否则您可以简单地如下声明该变量:
var observationTime: Double
在项目中使用swift和objective c时,这是您需要的吗?因为我从来没有用swiftno做过,你不必使用objective-c
结构,你可以使用编辑中的内容,如果你可以省略private
,这个答案的前半部分给出的是错误的建议。彻底摆脱观测时间。然后正确地进行observationTime
,而不使用不必要的backing变量。您为什么要创建backing\uu
属性?这看起来应该是属性(var-temperature:Double
和其他内容)。要添加到@RobNapier之前的注释中,如果需要,可以通过将setter设置为private,使属性只能由类写入。比如说private(set)var observationTime:Double
。在Swift中没有理由这样做。去掉\u observationTime
,然后只使用var observationTime:Double
。如果您希望setter是私有的,那么就这样说:private(set)var observationTime:Double
@rmaddy OP询问有关修复其错误的问题。在这个简单的示例中没有理由使用支持变量,但是,它们有很多用例。
var observationTime: Double