我在Realm中有一个名为Object
的{{1}}子类,而BrowserCategory
,Artist
和Decade
是Genre
的子类。< / p>
现在BrowserCategory
的每个子类都有BrowserCategory
属性LinkingObject
:
songs
(例如,对于let songs = LinkingObjects(fromType: Song.self, property: "decade")
子类)
我想在Decade
基类中写这个,所以我试过这个:
BrowserCategory
但是这会返回基类名而不是子类名,从而产生以下错误:
var songs = LinkingObjects(fromType: Song.self, property: className().lowercased())
有没有办法以我想要的方式做到这一点?
答案 0 :(得分:0)
您可能正在寻找type(of:self)
,这是多态的,正如此演示所示:
class BrowserCategory {
func className() -> String {
return String(describing:type(of:self))
}
}
class Artist : BrowserCategory {}
class Decade : BrowserCategory {}
class Genre : BrowserCategory {}
let a = Artist()
a.className() // "Artist"
但是,我应该提醒你,要求将一个班级的名字作为一个字符串是一件非常奇怪的事情。使用类类型作为类型更常见。