领域查询对象属性字段的属性
我正在使用Swift为iOS开发应用程序,并selectRealm作为它的数据库解决scheme。 我问了一个关于Realm的问题 ,现在我又有了一个问题 。
假设我们有这样的模式:
class Person: Object { dynamic var id: String = NSUUID().UUIDString dynamic var name: String? dynamic var cars: Car? class Car: Object { dynamic var name: String?
我有一个类(人),其中包含任何数量的另一个类(汽车)的对象。 与“人”“连接”的汽车在该人的背景下具有一些属性(并且对于同一辆汽车对于不同的人或对于两个类似的汽车对于一个人可以是不同的)。 使用List <…>()我们不能存储每个Item的属性,对吗?
如果我们只为一个人使用汽车,并且只有一次,我们可以创build另一个只包含汽车附加属性的类,并将其与人的ID和汽车的ID相链接。 但是,如果我们有两辆具有不同附加属性的类似汽车,那就没有用了。
那么,我如何看待解决scheme。 有一个表(类)存储人的ID,一辆汽车的ID和这辆车的附加属性。 对于同一个人的另一辆车,它具有相同的人员ID,车辆ID(相同或不相同)以及另一个车辆的这个实例的附加属性。
有一个问题(我的意思是一个问题)。 有了这个结构,我想查询所有的汽车从他们的附加属性,人的ID等于some_id 。 我应该怎么做? 或者也许是另一种结构(也许使用List <…>)我应该有这样的行为?
FastList
究竟是什么?
如果您希望Items
具有Lists
集合的属性。
你必须重新定义你的领域模型。 像这样的东西。
class Car:Object{ dynamic var createDate: NSDate = NSDate() } class Person:Object{ let cars = List<Car>() }
并用这样的谓词查询
let realm = Realm() var ownedCarsFilterByDate = realm.objects(Person).filter("ANY cars.createDate = '\(date)'")
编辑更新的问题
您的解决scheme是创build具有“人”,“车”和“上下文属性”的表类。
你的模型会是这样的
class PersonAndCarRelation:Object{ dynamic var person: Person? dynamic var car: Car? dynamic var contextAttribute = "" }
你可以查询所有与人有关的汽车
let personID = "123456789" let personAndCarArray = realm.objects(PersonAndCarRelation).filter("person.id == \(personID)") for personAndCar in personAndCarArray{ let personName = personAndCar.person.name let carName = personAndCar.car.name let context = personAndCar.contextAttribute println("I am \(personName). I have a \(carName) with \(context)") }