【问题标题】:How to create one Realm class from several other classes?如何从其他几个类创建一个 Realm 类?
【发布时间】:2017-04-23 10:38:31
【问题描述】:

大家下午好,

我目前正在处理一项名为“书签”的任务。简短的描述是每当我单击书签按钮时,应用程序都会保存文章,然后将其显示在 BookmarkVC 中。

我有 3 种类型的对象,分别称为“News”、“Documents”和“ITSectionResult”,我的想法是创建一个名为“BookmarkItem”的对象,其中包含上述 3 个对象的元素和一个名为 bookmarkCategory 的属性来指示对象的类型,以便我可以使用它在 BookmarkVC 中显示。我只想处理一个领域对象,所以任何人都可以帮我一个想法将这些人组合在一起吗?在这里,我将附上我的草稿代码如下:

新闻类:

class NewsArticle:Object {
dynamic var title: String?
dynamic var body:String?
dynamic var category:String?
dynamic var createTime:String?
dynamic var image:String?
dynamic var id:String?

convenience init (title:String, body:String, category:String, 
image:String, id:String, createTime:String) {
    self.init()
    self.title = title
    self.body = body
    self.category = category
    self.image = image
    self.id = id
    self.createTime = createTime
 }

文档类:

class Documents {
var id: String?
var title:String?
var createTime:CLong?
var url:String?

init (title:String, id:String, createTime:CLong?, url:String) {
    self.title = title
    self.id = id
    self.createTime = createTime
    self.url = url
}

ITSectionResult 类:

class SectionSearchResult {
var title:String?
var image:String?
var id:String?
var byCategory:String?

init (title:String, image:String, id:String, byCategory:String) {
    self.title = title
    self.image = image
    self.id = id
    self.byCategory = byCategory
}

最后是起草 BookmarkItem 类:

class BookmarkItem:Object {

//Category
dynamic var bookmarkCategory:BookMarkItemCategory?

dynamic var title: NewsArticle?
dynamic var body:NewsArticle?
dynamic var category:NewsArticle?
dynamic var createTime:NewsArticle?
dynamic var image:NewsArticle?
dynamic var id:NewsArticle?

dynamic var link:String?
dynamic var url:String?

}

class BookMarkItemCategory:Object {
dynamic var name = ""
}

在这里我要提醒一下,BookmarkItem 类使用 3 个主要属性来显示在 BookmarkVC 中,“图像”用于过滤器类别类型(例如:文档对象的书籍图像,新闻对象的报纸图标),“标题”用于在 WebView 中显示的标题和 url。非常感谢,祝大家周末愉快。

【问题讨论】:

  • 不让它们在多个类中。

标签: swift database-design swift3 model realm


【解决方案1】:

正如上面 EpicPandaForce 的 cmets 中所述,这可以通过不为每种类型设置一个类而使用统一模型来实现。

import RealmSwift

final class UnifiedModel: Object {
    dynamic var title: String = ""
    dynamic var id: String = ""
    dynamic var createTime: String = ""
    dynamic var category: String = ""
    dynamic var body: String?
    dynamic var image: String?

    override static func primaryKey() -> String {
        return "id"
    }
}

对于我上面展示的模型,每个实例都需要一个标题、ID、创建时间和类别,而正文和图像可以为零。如果您有任何其他问题,请随时跟进。

免责声明:我为 Realm 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多