【发布时间】:2018-01-08 17:55:58
【问题描述】:
先说这个,我对swift的了解很少(昨天刚通过这个项目)。我正在尝试重现 Xcode8.3.3 和 Swift 3.1 中的构建
我已经修复了一些编译源问题和其他一些与类相关的错误。我遇到了一个 get-only 属性错误。
var cloudUse : F2Type32 = 0x1;
var anyCloudUse : Bool {
get {
return (cloudUse != 0) ? true : false
}
}
var iCloudUse : Bool {
get {
return cloudUse.b0
}
set(newValue) {
cloudUse.b0 = newValue //error. Cannot assign to property: 'b0' is a get-only property
}
}
var googleDriveUse : Bool {
get {
return cloudUse.b1
}
set(newValue) {
cloudUse.b1 = newValue //error. Same as above
}
}
我看了这个get-only property。但似乎仍然无法弄清楚发生了什么。
b0 和 b1 定义如下
extension VInt {
func maxSize() -> UIntMax { return self.asU64 }
init(_ val : Int) {
if (val > 0) {self.init(UIntMax(val)) }
else {
self.init(UIntMax(val&0x7fffffff)) } }
init(fromMax : UIntMax) { self.init(fromMax) }
init<T2 : VInt>( val : T2) { self.init(fromMax : val.asMaxSize) }
var b0 : Bool {
return ((self & 0x1) == 0) ? false : true}
var b1 : Bool {
return ((self & 0x2) == 0) ? false : true}
【问题讨论】:
-
显示 F2Type32 声明
-
typedef uint32_t F2Type32;@antonsergeev88 -
看起来你需要位掩码,试试更快捷的东西stackoverflow.com/questions/24059485/…
-
这是 swift 4 独有的吗?
-
如果您控制点击
.b0和.b1并跳转到它们的定义,该代码是在哪里定义的,它是什么样的?