Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法分配给属性';观测时间';是一个只能获取的属性_Ios_Swift_Object_Getter Setter - Fatal编程技术网

Ios 无法分配给属性';观测时间';是一个只能获取的属性

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

我在尝试将observationTime设置为时间间隔时遇到此错误。我不知道为什么我可以设置属性,我在其他地方也是这样设置的

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