无法分配属性:' b0'是一个只获得房产

时间:2017-08-01 18:17:20

标签: ios swift xcode

让我先说一下,我对swift的了解很少(昨天刚刚通过这个项目)。我试图在Xcode8.3.3Swift 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。但似乎还无法弄清楚发生了什么。

b0b1定义如下

    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}

1 个答案:

答案 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}
}

希望我能得到正确的东西(这不是我的强项)。