【发布时间】:2016-03-10 20:53:33
【问题描述】:
我是 Realm 的新手,遇到的查询问题让我疯狂了好几天。我有 2 个简单的类 Dog 和 Person 作为:
class Dog: Object {
dynamic var dogName = ""
dynamic var dogAge = 1
var owners: [Person] {
return linkingObjects(Person.self, forProperty: "dogs")
}
}
class Person: Object {
dynamic var firstName = ""
let dogs = List<Dog>()
}
向Realm添加数据后,我有以下数据:
- 奥斯卡有 3 只狗,分别是 A、B 和 C,年龄分别为 4、6 和 9 岁
- Jennifer 有 3 只狗,分别是 D、E 和 F,年龄分别为 1、2 和 7 岁
- 一只名叫 Z 的狗,8 岁,没有主人。
let database = try! Realm()
// Query all Dogs- It should have 7 dogs
let allDogs = database.objects(Dog)
print("A total of \(allDogs.count) dogs") // 7 dogs - correct
// Query All dogs between age of 4 and 12 - there should be 5 dogs
let agedDogs = database.objects(Dog).filter("dogAge BETWEEN {4,12}")
print("Dogs between Age 4 and 12 = \(agedDogs.count) \n") // 5 dogs - OK
我想知道所有agedDog,其中有多少属于奥斯卡?
我试过了:
let specificOwnerAgedDogs = agedDogs.filter("ANY owners.firstName = 'Oscar'")
print("Oscar Dogs between Age 4 and 12 = \(specificOwnerAgedDogs)")
但是这个查询导致错误:
由于未捕获的异常“无效的属性名称”而终止应用程序,原因:在“狗”类型的对象中找不到“属性“所有者””
我将 Realm Swift 与 Swift 2.1.1 一起使用。
【问题讨论】:
标签: relationship realm