gpt4 book ai didi

ios - 无法分配给协议(protocol)中的属性 - Swift 编译器错误

转载 作者:行者123 更新时间:2023-11-30 11:00:30 25 4
gpt4 key购买 nike

我用 Swift 中的以下代码将我的头撞在墙上。我定义了一个简单的协议(protocol):

protocol Nameable {
var name : String { get set }
}

并通过以下方式实现:

class NameableImpl : Nameable {
var name : String = ""
}

然后我在另一个文件中有以下方法(不要问我为什么):

func nameNameable( nameable: Nameable, name: String ) {
nameable.name = name
}

问题是编译器对此方法中的属性赋值给出以下错误:

cannot assign to 'name' in 'nameable'

我看不出我做错了什么...以下代码可以正常编译:

var nameable : Nameable = NameableImpl()
nameable.name = "John"

我确信这是我忽略的一些简单的事情 - 我做错了什么?

最佳答案

@matt 的回答是正确的。

另一个解决方案是将 Nameable 声明为 class only protocol .

protocol Nameable: class {
// ^^^^^^^
var name : String { get set }
}

我认为,这个解决方案更适合这种情况。因为除非 nameableclass 的实例,否则 nameNameable 是无用的。

关于ios - 无法分配给协议(protocol)中的属性 - Swift 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436756/

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