gpt4 book ai didi

enums - 当协议(protocol)包含 Swift 中的枚举时检查协议(protocol)一致性?

转载 作者:搜寻专家 更新时间:2023-10-30 22:19:12 25 4
gpt4 key购买 nike

在 Swift 中,为了检查协议(protocol)是否符合 isas? 向下转型,您必须使用 @objc 属性标记协议(protocol)。一旦你用那个属性标记了一个协议(protocol),你似乎就不能有一个以枚举作为属性的协议(protocol),因为枚举不能在 Objective-C 中表示。

enum Language:String {
case English = "English"
case Spanish = "Spanish"
case German = "German"
}

@objc protocol Humanizable {
var language:Language { get set }
}

你会得到一个错误:error: property cannot be marked @objc because its type cannot be represented in Objective-C

这是完整的例子:http://swiftstub.com/475659213/

在示例中,如果将 Language 更改为 String,则它可以正常工作。

最佳答案

这不是答案,但我确实在您的“swift stub”中发现了一个编译错误,Human 应该定义如下:

class Human:Humanizable {
var name:String = "Frank"
var language:Language = .English
}

您试图从字符串文字创建枚举实例。

我有点惊讶协议(protocol)一致性检查需要 @obj - 太丑了!

关于enums - 当协议(protocol)包含 Swift 中的枚举时检查协议(protocol)一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855013/

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