2016-04-04 10 views
1

В основном моя проблема заключается в том, что я хочу определить объект realm (RealmSwift.Object подкласс), и я не хочу, чтобы он появлялся в базе данных Realm, инструктируйте Realm пропустить этот.Не привязывайте объект Realm в таблицу Realm

Например:

Я хочу реализовать логику синхронизации в частном стручок с динамическим списком объектов, которые все подклассы от объекта, называется SyncableObject.

У меня есть два класса, которые я зарегистрировал в своем модуле синхронизации (ConcreteClassA и ConcreteClassB), как SyncModule.register([ConcreteClassA.self, ConcreteClassB.self]).

Теперь Realm обнаруживает, что у меня есть 3 RealmSwift.Object подклассы и создает 3 разных таблицы.

Я хочу, чтобы дать команду Realm, а не создавать таблицу для класса SyncableObject (промежуточного объекта), например, переопределить функцию класса или что-то в этом роде.

ответ

2

Вы хотите переопределить +[RLMObject shouldIncludeInDefaultSchema]. С Realm's source:

// Returns whether the class is included in the default set of classes persisted in a Realm. 
+ (BOOL)shouldIncludeInDefaultSchema; 
+0

Спасибо! Это определенно то, что я искал. Я искал это, потому что знал, что я его где-то видел, но не мог найти его, когда мне было нужно. –

0

Вот ответ на Swift:

override class func shouldIncludeInDefaultSchema() -> Bool { 
    return false 
} 
0

Обновив предыдущие решения, я понял, что это будет делать трюк, чтобы не включать в себя базовый объект и сделать включают подклассы:

/** 
Do not include SyncableObject into schema, only the subclasses 
*/ 
public override class func shouldIncludeInDefaultSchema() -> Bool { 
    return SyncableObject.className() != self.className() 
} 
Смежные вопросы