swift - 结点并 swift 加入 Realm

标签 swift join realm entity junction

我有三个模型来保存联系人和类别。和一个联结表,用于将不同类别中的联系人保存为类别联系人。

类别:

import UIKit
import Foundation
import RealmSwift

class Category: Object, IEntity
{


override class func primaryKey() -> String? {
    return "CategoryId"
}

static func KeyName() -> String
{
    return primaryKey()!
}

 dynamic var    CategoryId: Int64 = 0
 dynamic var    Name = ""
dynamic var    AvatarName = ""
 dynamic var    CreationDateTime = ""
dynamic var    LocalContactCount: Int32 = 0
dynamic var    ServerContactCount: Int32 = 0
dynamic var    UserId: Int64 = 0
}

联系人为:

import UIKit
import Foundation
import RealmSwift

class CustomerClubContact: Object, IEntity
{

override class func primaryKey() -> String? {
    return "CustomerClubContactId"
}

static func KeyName() -> String
{
    return primaryKey()!
}

 dynamic var    CustomerClubContactId: Int64 = 0
 dynamic var    Prefix = ""
 dynamic var    FirstName = ""
 dynamic var    LastName = ""
 dynamic var    Mobile = ""
 dynamic var    BirthDay = ""
 dynamic var    AvatarName = ""
 dynamic var    UserId: Int64 = 0
 dynamic var    ErrorMessage = ""
 dynamic var    IsMembershipCanceled = false
 dynamic var    IsDeleted = false

 }

连接表是:

import UIKit
import Foundation
import RealmSwift

class CategoryContacts: Object, IEntity
{


override class func primaryKey() -> String? {
    return "Id"
}

static func KeyName() -> String
{
    return primaryKey()!
}

dynamic var    Id: Int64 = 0
dynamic var    CategoryId: Int64 = 0
dynamic var    CustomerClubContactId: Int64 = 0

}

现在我想获取一个特殊类别中的所有联系人。我不知道在 realm db 中是否可行?我怎样才能在 swift 中在 realm db 中做到这一点

最佳答案

我找到了解决方案。 给以后遇到的人

import UIKit
import Foundation
import RealmSwift

class CustomerClubContact: Object, IEntity
{

override class func primaryKey() -> String? {
    return "CustomerClubContactId"
}

static func KeyName() -> String
{
    return primaryKey()!
}

 dynamic var    CustomerClubContactId: Int64 = 0
 dynamic var    Prefix = ""
 dynamic var    FirstName = ""
 dynamic var    LastName = ""
 dynamic var    Mobile = ""
 dynamic var    BirthDay = ""
 dynamic var    AvatarName = ""
 dynamic var    UserId: Int64 = 0
 dynamic var    ErrorMessage = ""
 dynamic var    IsMembershipCanceled = false
 dynamic var    IsDeleted = false


 let CategoryContactList = List<CategoryContacts>()


}

import UIKit
import Foundation
import RealmSwift

class Category: Object, IEntity
{


override class func primaryKey() -> String? {
    return "CategoryId"
}

static func KeyName() -> String
{
    return primaryKey()!
}

dynamic var    CategoryId: Int64 = 0
dynamic var    Name = ""
dynamic var    AvatarName = ""
dynamic var    CreationDateTime = ""
dynamic var    LocalContactCount: Int32 = 0
dynamic var    ServerContactCount: Int32 = 0
dynamic var    UserId: Int64 = 0

let CategoryContactList = List<CategoryContacts>()

}




import UIKit
import Foundation
import RealmSwift

class CategoryContacts: Object, IEntity
{
override class func primaryKey() -> String? {
    return "Id"
}

static func KeyName() -> String
{
    return primaryKey()!
}

dynamic var    Id: Int64 = 0
dynamic var    CategoryId: Int64 = 0
dynamic var    CustomerClubContactId: Int64 = 0

}

然后插入

    let c1 = Category()
    c1.CategoryId = 1
    c1.Name = "category 1"
    categoryBiz.insert(item: c1)

    let c2 = Category()
    c2.CategoryId = 2
    c2.Name = "category 2"
    categoryBiz.insert(item: c2)



    let cat1 = CategoryContacts()
    cat1.Id = 100
    cat1.CategoryId = 1
    cat1.CustomerClubContactId = 10
    //categoryContactBiz.insert(item: cat1)

    let cat2 = CategoryContacts()
    cat2.Id = 101
    cat2.CategoryId = 2
    cat2.CustomerClubContactId = 11
    //categoryContactBiz.insert(item: cat1)



    let con1 = CustomerClubContact()
    con1.CustomerClubContactId = 10
    con1.FirstName = "f1"
    con1.LastName = "l2"
    con1.CategoryContactList.append(cat1)
    contactBiz.insert(item: con1)

    let con2 = CustomerClubContact()
    con2.CustomerClubContactId = 11
    con2.FirstName = "f2"
    con2.LastName = "l2"
    con2.CategoryContactList.append(cat2)
    contactBiz.insert(item: con2)

并通过连接获取数据

    func FetchAllEligibleWithCategoryId(categoryId: Int64)-> Results<RealmEntityType>?
{
    do
    {

        let object = realm.objects(CustomerClubContact.self).filter(" any CategoryContactList.CategoryId == \(categoryId) AND IsDeleted = \(false) And IsMembershipCanceled = \(false) ")
        return object

    }
    catch
    {
        print(error.localizedDescription)

    }
    return nil

}

关于swift - 结点并 swift 加入 Realm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47986921/

相关文章:

ios - Swift UITableViewCell 重用搞乱了标签/应用程序计算错误

python - 如何在 Pandas 中将单级 df 合并为多级 df?

unit-testing - 使用 Robolectric 和 PowerMock 进行 Realm 单元测试,代码覆盖率为零

ios - 使用 Realm 和 Swift 的具有多个部分的 UITableView

swift - 如何在 Collection View 中设置图像半径?

具有多个日期条件的 SQL JOIN

mysql - 比较运算符在 MySQL 查询中不起作用

swift - Realm + NSTableView + NSArrayController

安卓, Realm : After add annotation @PrimaryKey get error: Following changes cannot be made in additive-only schema mode:

ios - "Navigation bar"的警告帧在运行时会有所不同出现在 Xcode 8 Swift 3 中