Ios &引用;外键“;作为域中的主键

Ios &引用;外键“;作为域中的主键,ios,swift,realm,Ios,Swift,Realm,我刚开始使用realm,并试图找出编写模型层的最佳方法,因此在考虑过它之后,我决定在这里征求一些意见。我们开始: 我正在编写这些表的领域版本: 账户 id-字符串(主键) 名称-字符串 类型-Int 支票账户 id-字符串(FK PK) 在本例中,检查帐户是一个帐户,但realm仍然不支持继承(我认为使用帐户作为超类将是在模型层中找出这些表的更好方法) 这就是我对realm的实际操作: 账户类别: import Foundation import RealmSwift class Accoun

我刚开始使用realm,并试图找出编写模型层的最佳方法,因此在考虑过它之后,我决定在这里征求一些意见。我们开始:

我正在编写这些表的领域版本:

账户
id-字符串(主键)
名称-字符串
类型-Int

支票账户
id-字符串(FK PK)

在本例中,检查帐户是一个帐户,但realm仍然不支持继承(我认为使用帐户作为超类将是在模型层中找出这些表的更好方法)

这就是我对realm的实际操作:

账户类别:

import Foundation
import RealmSwift

class Account: Object {

    dynamic var id = NSUUID().UUIDString
    dynamic var name = ""
    dynamic var type = 3

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

class CheckingAccount: Object {

    dynamic lazy var id: String = {
        return self.account.id
    }()
    dynamic var account = Account()

    convenience init(name: String, type: AccountType) {
        self.init()

        self.account.name = name
        self.account.type = type.rawValue
    }

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

}
支票账户类别:

import Foundation
import RealmSwift

class Account: Object {

    dynamic var id = NSUUID().UUIDString
    dynamic var name = ""
    dynamic var type = 3

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

class CheckingAccount: Object {

    dynamic lazy var id: String = {
        return self.account.id
    }()
    dynamic var account = Account()

    convenience init(name: String, type: AccountType) {
        self.init()

        self.account.name = name
        self.account.type = type.rawValue
    }

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

}
怎么样?这是一种“不要做”的方式,用realm来计算我的SQL表


谢谢大家!

你能多分享一些你想做的事情吗?不知道问题是什么exactly@yoshyosh我想问的是,这是一种用领域类表示这些关系表的好方法,还是有更好的方法。可能会禁用银行的
id
属性,因为它有一个名为
account
的属性,该属性保存该银行数据的唯一id(因为银行是账户的一个专门化)。甚至可以使用Bank类的
id
属性作为其他唯一值(与Account
id
不同)。明白了吗?我在问我怎样才能“翻译”"我的关系数据库被划分为领域类。感谢您的关注:如果您想摆脱外键的概念,我有几个例子在这个github问题中讨论这一点。我必须更多地了解您试图对银行做些什么,因为我认为银行有很多账户,而一个账户有很多一家银行。这在语义上对我保持简单的心智模型来说是有意义的。一个好问题是,你打算使用这些主键id做什么?这个讨论帮助我理解了我把关系数据库和非关系数据库的概念混为一谈。对不起,关于语义,我也错了,
Bank
在这种情况下表示
支票账户
活期账户
我们很快就会有更多类型的账户,例如
储蓄
。因此我计划使用这些主键id来搜索这些账户中的费用或收入,因此我想计算账户余额并向用户显示一些统计信息(这是一款个人理财应用程序)。一个拥有多个帐户的用户如何?支票帐户、活期帐户和储蓄帐户是否具有类似的属性?我可以看到您通过主键获取一个用户,最后使用
currentUser
,然后使用
currentUser.accounts
对每个帐户进行迭代,以获取其余额,将其相加等等。哟u还可以使用相同的逻辑对用户(如currentBalance)计算属性。只要每个帐户有一个用户,并且该用户有一个主键,就可以使用谓词更轻松地搜索帐户。