2015-12-17 4 views
0

Я пытаюсь сделать запрос для дочерних объектов родителем. Поэтому у меня есть следующая структура:Почему объект Realm не соответствует CVarArgType?

class A : Object { 

} 

class B : Object { 
    dynamic var parent: A? 
} 

Вот код запрос, который не компилируется:

let parent = A() 
let predicate = NSPredicate(format: "parent == %@", parent) 
let results = realm.objects(B).filter(predicate) 

Поскольку класс А не соответствует CVarArgType. Поскольку официальная документация советует использовать NSPredicate Мне любопытно, почему она была разработана таким образом, и я не могу использовать такой предикат?

Я использую Xcode 7.2 и Realm v0.96.2.

Update # 1

Следующий код работает отлично:

let parent = A() 
let results = realm.objects(B).filter("parent == %@", parent) 

Так проблема только с NSPredicate.

+0

Оба фрагмента кода, которые вы разместили здесь, должны работать. Какую версию Xcode/Swift вы используете? – marius

+0

@marius Я обновил свой вопрос с помощью этой информации. Xcode 7.2 и Realm v0.96.2. –

ответ

0

Оказывается, что пользовательские типы нелегко соответствуют CVarArgType, даже если они являются NSObject потомками.

В качестве обходного пути вы можете использовать либо RealmCollectionType.filter, либо использовать NSPredicate(format:_argumentArray:_).

+0

Было бы неплохо иметь этот момент в документации. –

+0

Вы правы. Я создал [номер # 3039] (https://github.com/realm/realm-cocoa/issues/3039), чтобы отслеживать это. Благодарю. – marius

Смежные вопросы