让我先说一下,我对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}
答案 0 :(得分:2)
这是我第一次尝试修复。扩展程序目前只有一个getter,因此我们将编辑该扩展名以将行替换为以下内容:
var b0 : Bool {
get {return ((self & 0x1) == 0) ? false : true}
set {self = newValue ? self & 0x1 : self ^ 0x1}
}
var b1 : Bool {
get {return ((self & 0x2) == 0) ? false : true}
set {self = newValue ? self | 0x2 : self ^ 0x2}
}
希望我能得到正确的东西(这不是我的强项)。