【问题标题】:Cannot assign to property: 'b0' is a get-only property无法分配给属性:“b0”是仅获取属性
【发布时间】:2018-01-08 17:55:58
【问题描述】:

先说这个,我对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}

【问题讨论】:

  • 显示 F2Type32 声明
  • typedef uint32_t F2Type32;@antonsergeev88
  • 看起来你需要位掩码,试试更快捷的东西stackoverflow.com/questions/24059485/…
  • 这是 swift 4 独有的吗?
  • 如果您控制点击.b0.b1 并跳转到它们的定义,该代码是在哪里定义的,它是什么样的?

标签: ios swift xcode


【解决方案1】:

这是我第一次尝试修复。该扩展目前只有一个 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}
}

希望我的 bitset 是正确的(这不是我的强项)。

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    相关资源
    最近更新 更多