gpt4 book ai didi

swift - "Cannot assign to the result of this expression"变量 (var) 引起的错误

转载 作者:行者123 更新时间:2023-11-30 10:13:32 27 4
gpt4 key购买 nike

我定义了以下子类,其主要属性链接到枚举:

let NumberOfColors: UInt32 = 6

enum SphereColor: Int, Printable {
case Red = 0, Yellow, Blue, Green, Purple, White

var sphereName: String {
switch self {
case .Red:
return "red"
case .Yellow:
return "yellow"
case .Blue:
return "blue"
case .Green:
return "green"
case .Purple:
return "purple"
case .White:
return "white"
}
}

var description: String {
return self.sphereName
}

static func random() -> SphereColor {
return SphereColor(rawValue: Int(arc4random_uniform(NumberOfColors - 1)))!
}
}


class Sphere: SCNSphere {
var color : SphereColor

init(radius: CGFloat, color: SphereColor) {
self.color = color
super.init()
switch color.rawValue as Int {
case 0:
self.firstMaterial?.diffuse.contents = UIColor.redColor()
case 1:
self.firstMaterial?.diffuse.contents = UIColor.yellowColor()
case 2:
self.firstMaterial?.diffuse.contents = UIColor.blueColor()
case 3:
self.firstMaterial?.diffuse.contents = UIColor.greenColor()
case 4:
self.firstMaterial?.diffuse.contents = UIColor.purpleColor()
case 5:
self.firstMaterial?.diffuse.contents = UIColor.whiteColor()
default:
break
}
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

使用实例化它

let sphere = Sphere(radius: radius, color: SphereColor.random()) 

let sphereNode = SCNNode(geometry: sphere)

工作正常,但是当我选择其中一个节点并尝试使用

更改其颜色属性时
// node selection...
var geom = node.geometry! as! Sphere
geom.color.rawValue = 5

我收到“无法分配给此表达式的结果”错误,但我尚未将颜色属性声明为常量,并且不明白为什么会发生这种情况。我假设我在与 Sphere 类相关的代码中犯了一些基本错误,对此有什么想法吗?

编辑:使用

geom.color = SphereColor(rawValue: 5)!

正如 Martin R 所说,允许我构建并运行我的代码,但球体的颜色没有改变,这让我认为我的子类声明仍然有问题。

最佳答案

rawValue 是只读属性,您无法分配新值到它。您必须创建一个 SphereColor原始值并将其分配给 color 属性:

geom.color = SphereColor(rawValue: 5)!

或者如果原始值有可能超出范围并且不存在匹配的颜色:

if let color = SphereColor(rawValue: 5) {
geom.color = color
}

关于swift - "Cannot assign to the result of this expression"变量 (var) 引起的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31542491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com