2016-03-22 18 views
1

Realm demo veritabanında ters bağlantılı örnek nesneler var: objectReference, RealmTestClass1 öğesine bir bağlantıya sahiptir.Realm ters bağlantı için uygun kod nedir?

class RealmTestClass1: Object { 
    dynamic var integerValue = 0 
    let arrayReference = List<RealmTestClass0>() 
} 

class RealmTestClass2: Object { 
    dynamic var boolValue = false 
    dynamic var objectReference: RealmTestClass1? 
} 

Aynı yapı nasıl yeniden oluşturulur? ObjectReference özelliği için ana nesne özelliğine aynı bağlantıyı oluşturmak için hangi kod gereklidir?

cevap

0

Bölgelerdeki bağlantılar tek yönlüdür. Bu yüzden bir çok kişiye ait olan Person.dogs, bir Dog örneğine ve bir kişiye ait bir Dog.owner özelliğine bağlanırsa, bu bağlantılar birbirinden bağımsızdır. Bir Kişinin bir Kişi örneğinin köpek mülküne eklenmesi, bu kişinin sahip olduğu köpeğin sahiplik özelliğini otomatik olarak ayarlamaz. İlişki çiftlerini manuel olarak senkronize etmek, hataya açık, karmaşık ve yinelenen bilgiler olduğundan, Realm, aşağıda açıklanan geri bağlantıları almak için bir API ortaya çıkarır.

Ters ilişkiler ile belirli bir nesneye belirli bir nesneye bağlanan tüm nesneleri elde edebilirsiniz. Örneğin, bir Köpek örneğindeki Object.linkingObjects(_:forProperty:) numaralı çağrı, belirtilen sınıfın çağrılan örneğe bağlanan belirtilen sınıfın tüm nesnelerini belirtilen özellik ile döndürür. Bu Köpek üzerinde salt okunur (bilgisayarlı) sahipleri özelliği tanımlayarak bu modeli basitleştirmek mümkündür:

class Person: Object { 
    // ... other property declarations 
    let dogs = List<Dog>() 
} 

class Dog: Object { 
    dynamic var name = "" 
    dynamic var age = 0 
    var owners: [Person] { 
     // Realm doesn't persist this property because it only has a getter defined 
     // Define "owners" as the inverse relationship to Person.dogs 
     return linkingObjects(Person.self, forProperty: "dogs") 
    } 
} 

Bu benim okumanızı öneririz Realm's docs on relationships, alındı.

+0

Cevabınız için çok teşekkür ederim. alemdeki belgeleri okudum. Ancak bazen okuma daha net hale getirmez. alıntı yaptığınız kod, demo veritabanında olduğu gibi kişiye olan bağlantıyla yeni sütun eklemez. – alexey

+0

Sanırım sorunun ne olduğunu anlayamıyorum. "Aynı yapı nasıl yeniden yaratılır?" Gönderdiğiniz kod açıkladığınız yapıya sahip görünüyor, değil mi? Neyi başarmak istediğinizden farkı nedir? "Nesne özelliği için aynı bağlantıyı oluşturmak için objectReference özelliği için hangi kod gereklidir?" Aynı bağlantıyı iki ayrı bağlantı özelliği paylaşamaz, yani "bağlantılar tek yönlüdür" dür. Eğer sadece bir * link ayarlamak istiyorsanız, yukarıdaki linkimde yazdığı gibi 'linkingObjects (_: forProperty:)' kullanmalısınız. – jpsim

+0

Soruma yeterince açık olmasaydım özür dilerim. başka bir deneme yapmama izin ver. lütfen [ekran görüntüsü] 'ne bakın (https://s13.postimg.org/5bkv8zunr/111.jpg). Ben Realm demo veritabanında aynı bağlantı bağlantısını elde etmeye çalışıyorum. – alexey

İlgili konular