Joh*_*ton 6 enums protocols swift
在Swift中,为了检查协议是否符合is或as?向下转换,您必须使用@objc属性标记协议.一旦您使用该属性标记协议,您似乎无法将枚举作为属性,因为枚举无法在Objective-C中表示.
enum Language:String {
case English = "English"
case Spanish = "Spanish"
case German = "German"
}
@objc protocol Humanizable {
var language:Language { get set }
}
Run Code Online (Sandbox Code Playgroud)
你会收到一个错误: error: property cannot be marked @objc because its type cannot be represented in Objective-C
以下是完整示例:http://swiftstub.com/475659213/
在示例中,如果您更改Language为String然后它工作正常.
这不是答案,但我确实在您的“swift 存根”中发现了编译错误,Human应定义如下:
class Human:Humanizable {
var name:String = "Frank"
var language:Language = .English
}
Run Code Online (Sandbox Code Playgroud)
您试图从字符串文字创建枚举实例。
我有点惊讶协议一致性检查的要求@obj——这太丑了!
| 归档时间: |
|
| 查看次数: |
1003 次 |
| 最近记录: |