2016-11-14 64 views
2
var numbersDetail = List is type of ContactDetail() 
let predicate = NSPredicate(format: ContactDetail.NUMBER + " = %@", formattedNumber!) 
let realmContactDetail = numbersDetail.filter(predicate).first 

获取错误:境界列表过滤器夫特

掷RLMException( “此方法也可以仅在RLMArray被称为从RLMRealm检索 实例”);

回答

1

此错误,如果你尝试与其父对象添加到Realm之前执行境界斯威夫特List对象的查询(这实际上是引擎盖下的Objective-C RLMArray对象)发生。

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 

简而言之,你需要确保numbersDetail属于Realm您执行查询之前。您可以通过检查numbersDetail.realm != nil轻松进行测试。