Swift 域列表过滤器
提取错误: 抛出RLMException(“此方法只能在RLMArray上调用 从RLMRealm中检索的实例)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 +
如果在将域Swift
列表
对象的父对象添加到域
之前,尝试对域Swift列表
对象(实际上是引擎盖下的Objective-CRLMArray
对象)执行查询,则会发生此错误
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