gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:00:28 24 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 }
}

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

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

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