在Swift中我有这个单例模式:
问题在于当我尝试像这样调用这些方法时。
因为我遇到了这个错误
这个错误很明显。 "shared" 是 "let",显然不能被修改。但是要修改 "var" ,我需要将方法声明为可变的(mutating)。这就是一个恶性循环。
有什么想法吗? 谢谢。
struct Networking {
static let shared = Networking()
private var observed: Set<String> = []
}
我需要操作observed
,并且需要创建一个有用的方法来插入和删除Set
中的成员。
mutating func addObserver(for member: String) {
//other code
observed.insert(member)
}
mutating func removeObserver(for member: String) {
//other code
observed.remove(member)
}
问题在于当我尝试像这样调用这些方法时。
Networking.shared.addObserver(for: "x")
因为我遇到了这个错误
cannot use mutating on immutable value: “shared” is a “let” constant
这个错误很明显。 "shared" 是 "let",显然不能被修改。但是要修改 "var" ,我需要将方法声明为可变的(mutating)。这就是一个恶性循环。
有什么想法吗? 谢谢。