Swift 域列表过滤器

Swift 域列表过滤器,swift,realm,Swift,Realm,提取错误: 抛出RLMException(“此方法只能在RLMArray上调用 从RLMRealm中检索的实例) 如果在将域Swift列表对象的父对象添加到域之前,尝试对域Swift列表对象(实际上是引擎盖下的Objective-CRLMArray对象)执行查询,则会发生此错误 var numbersDetail = List is type of ContactDetail() let predicate = NSPredicate(format: ContactDetail.NUMBER +

提取错误:

抛出RLMException(“此方法只能在RLMArray上调用 从RLMRealm中检索的实例)


如果在将域Swift
列表
对象的父对象添加到
之前,尝试对域Swift
列表
对象(实际上是引擎盖下的Objective-C
RLMArray
对象)执行查询,则会发生此错误

var numbersDetail = List is type of ContactDetail()
let predicate = NSPredicate(format: ContactDetail.NUMBER + " = %@", formattedNumber!)
let realmContactDetail = numbersDetail.filter(predicate).first
类人物:对象{
动态变量名称=“”
动态变量图片:NSData?=nil//支持选项
让狗进来
}
让狗
dog.name=“Rex”
让person=person()
person.dogs.append(dog)
让rex=person.dogs.filter(“name=='rex')//此时查询将触发异常
让我试试!领域()
尝试realm.write{
realm.add(person)
}
让rex=person.dogs.filter(“name=='rex')//查询现在将按预期工作
简而言之,在执行该查询之前,您需要确保
numbersdail
属于
领域。您可以通过检查
numbersDetail.realm!=无

class Person: Object {
  dynamic var name = ""
  dynamic var picture: NSData? = nil // optionals supported
  let dogs = List<Dog>()
}

let dog = Dog()
dog.name = "Rex"

let person = Person()
person.dogs.append(dog)

let rex = person.dogs.filter("name == 'Rex'") // QUERY WILL TRIGGER EXCEPTION AT THIS POINT

let realm = try! Realm()
try! realm.write {
    realm.add(person)
}

let rex = person.dogs.filter("name == 'Rex'") // Query will now work as expected