我有一个关于 Swift 和可选属性的问题。
假设我有以下代码:
import Foundation
class MyClass: NSObject {
var parent: MyClass?
var string: String?
init() {
super.init()
}
}
let variable : MyClass = MyClass()
variable.string = "variable"
variable.parent?.string = "parent"
我在以下行中收到错误消息“无法分配给该表达式的结果”
variable.parent?.string = "parent"
现在,我可以通过将问号替换为感叹号来抑制此错误,据我所知,这使 Swift 假设对象将在运行时存在,但它崩溃了,因为显然没有对象。
本质上,如何在不执行“if variable.parent”之类的操作的情况下为可选变量设置属性?
最佳答案
要使用可选的,你需要使用可选的链接
let variable : MyClass = MyClass()
variable.string = "variable"
variable.parent = MyClass()
if let a = variable.parent {
a.string = "parent"
}
或者如果你确定那里有对象你可以做
variable.parent!.string = "parent"
请注意,如果您没有初始化父级,您将得到一个错误。
关于properties - "Cannot assign to the result of this expression"- 如何设置可选变量的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24042965/