2016-04-04 24 views
1

Temelde, bir realm nesnesini (RealmSwift.Object alt sınıf) tanımlamak istediğim ve Realm veritabanında görünmesini istemediğimden, Realm'e bunu atlamasını bildirmesi gerekiyor. ÖrneğinRealm nesnesini Realm tablosuna eşlemeyiniz.

: Bütün bir nesneden subclassed vardır nesnelerin dinamik liste ile özel bölmesinde bir senkronizasyon mantığı uygulamak istediğiniz

, SyncableObject aradı.

Eşitleme modülüne (ConcreteClassA ve ConcreteClassB) SyncModule.register([ConcreteClassA.self, ConcreteClassB.self]) gibi kaydettirdiğim iki sınıfa sahibim.

Now Realm, 3 RealmSwift.Object alt sınıfım olduğunu ve 3 farklı tablo oluşturduğunu algılıyor.

Realm komutunu vermek için bir çözüm istiyorum, bir sınıf işlevini veya bunun gibi bir şeyi geçersiz kılmak gibi SyncableObject (ara nesne) sınıfı için tablo oluşturmamaya çalışıyorum.

cevap

2

+[RLMObject shouldIncludeInDefaultSchema]'u geçersiz kılmak istersiniz. Realm's source Gönderen:

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

Teşekkür ederiz! Kesinlikle aradığım şey bu. Bunu arıyordum çünkü onu bir yerlerde gördüğümü biliyordum, ama ihtiyacım olduğunda onu bulamıyordum. –

0

İşte Swift yılında cevabı:

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

önceki çözümler yükselterek, bu taban nesnesi içermeyecek şekilde hile yapmak ve alt sınıfları dahil yapacağız düşündüm:

/** 
Do not include SyncableObject into schema, only the subclasses 
*/ 
public override class func shouldIncludeInDefaultSchema() -> Bool { 
    return SyncableObject.className() != self.className() 
}