【发布时间】:2015-04-29 09:43:35
【问题描述】:
我想知道是否可以在 swift 中检查一个类是否符合协议。
我有一个 EntityObject 类,它包含 Java 中的一些基本功能,我会将其抽象化,但由于 swift 不进行抽象,所以我正在像这样运行它。
我还有一个实体协议,它需要一个路径属性的 getter(它实际上并不存在,但总是在我们的 API 中返回路径)。
现在在始终扩展的 EntityObject 类中(否则你会遇到致命错误)。我想获得这条路径,但 EntityObject 不符合实体协议,但它的孩子在大多数情况下都这样做。
示例路径获取器:
class var path:String {get { return "blog/{blogId}/comments" } }
使用 reflect() 的 getter 没有出现在 Mirror 中,可能是因为它是一个类(静态)变量,我尝试了类似的方法:
if let entity = self as? Entity {
return entity.path
}
但这会返回一个实体实例(我猜),因为我不允许在这里使用路径或查看任何选项。
任何人都知道我是否可以通用地做到这一点?
【问题讨论】:
-
您要求检查一个类是否符合协议,但您的问题是否则
-
注意完全正确,它已经说明我只想访问一个变量,因此我认为我应该能够将它“转换”为协议。这似乎没有必要。感谢您的反对。我编辑了标题,因此它实际上更能反映问题的内容。
标签: ios swift generics reflection protocols