I have three models to save Contcacts and Categories. and a junction table to save Contacts in different Categories as CategoryContacts.
Category :
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
}
Contacts as :
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
}
and the junction table is :
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
}
Now I want to get all contacts which are present in a special category. I don't know if it is possible in realm db or not? How Can I do it in realm db in swift
I found the solution. For those who encounter in the future
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
}
then to insert
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)
and to fetch Data with join i did
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
}