gpt4 book ai didi

swift - 在父类(super class)中使用 className() 来获取 Realm 中子类的名称

转载 作者:行者123 更新时间:2023-11-30 12:28:09 25 4
gpt4 key购买 nike

我在 Realm 中有一个名为 BrowserCategoryObject 子类,以及 ArtistDecade GenreBrowserCategory 的子类。

现在,BrowserCategory 的每个子类都有这个 LinkingObject 属性 songs:

let songs = LinkingObjects(fromType: Song.self, property: "decade") 

(例如,对于 Decade 子类)

我想在 BrowserCategory 基类中编写此内容,因此我尝试了以下操作:

var songs = LinkingObjects(fromType: Song.self, property: className().lowercased())

但是这会返回基类名称而不是子类名称,并给出以下错误:

- Property 'Song.browsercategory' declared as origin of linking objects property 'Decade.songs' does not exist

有没有办法按照我想要的方式做到这一点?

最佳答案

您可能正在寻找 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"

但是,我应该提醒您,以字符串形式请求类的名称是一件非常奇怪的事情。更常见的做法是使用类类型作为类型。

关于swift - 在父类(super class)中使用 className() 来获取 Realm 中子类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921197/

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