2015-03-04 25 views
5

Realm dokümanı, RLMResults'un NSArray numaralı yamasının olduğunu söylüyor. Veritabanından döndüğüm bazı sonuçlarım var ve bunu başka bir RLMResults ile birleştirmek istiyorum. Ama bu immutable gibi görünüyor, RLMResults başka bir RLMResults gelen nesneler eklemek nasıl? ya da değişebilir mi? veya NSArray'a dönüştürün?RLMResults nasıl değişebilir hale getirilir?

+0

Sorunuza yanıt vermeye ve gerçekten bu API tasarımından nefret etmeye başlıyor haha. RLMResults'ları neden birleştirmeniz gerekiyor? –

+0

@MillieSmith RLMResults'u RLMResults ile birleştirmem gerekiyor. –

+0

Yapmaya çalıştığınız şey hakkında daha fazla bilgi paylaşabilir misiniz? Küçük bir kod örneği iyi olurdu. Bu, – yoshyosh

cevap

3

Bu, el ile yapmanız gereken bir şey. İki sonucunuzu birleştirerek bir RLMArray oluşturabilirsiniz.

Yine de aynı türden RLMObjects için yol haritası üzerinde bir sendika/birleştirme yöntemini tartışıyoruz.

bize kullanım durumları anlamak ve potansiyel Yeter ki aynı tip olduğu gibi api tasarımı

etkilemesine yardımcı olacaktır paylaşabilir Herhangi biraz burada öğrendim genel bir örneği

let currentTask = Task.objectsWhere("name = %@", "First task").firstObject() as Task 
let currentRecords = currentTask.records 
let arrayOfRecords = RLMArray(objectClassName: "Record") 

arrayOfRecords.addObjects(currentRecords) 

let futureTask = Task.objectsWhere("name = %@", "Future task").firstObject() as Task 
let futureRecords = futureTask.records 

arrayOfRecords.addObjects(futureRecords) 
+0

kullanım durumlarına dayanarak değerlendirebileceğimiz bir şey olabilir Bir RLMResults nesnesini bir RLMArray nesnesine dönüştürmek için kod sağlayabilir misiniz? Bunu nasıl yapacağımı anlayamıyorum ve bu OP'nin sorusunun cevabı olurdu. RLMArray'ın örneklendirilemediğinden, bir örneğe rasgele nesne ekleyebileceğinizden de garip geliyor. Ayrıca, bu sorunun kapsamı biraz dışında, ancak RLMResults'ta, firstObject ve lastObject'e sahip olmanın kullanımı nedir? Onlardan başka öğeler almanın bir yolunu bulamıyorum. Bunlar muhtemelen naif sorular - kütüphaneye yeni geldim. –

+0

Sorun değil, örneğimi buna eklemek için düzenledim. Bir türle örneklenebilir. Nasıl başlatmaya çalışıyordun? Son sorunun ne olduğundan emin değiliz, ancak Task.objectsWhere ... görevini aradığımdan beri bir RLMResults döndüreceğinden, yukarıdaki örnekte gördüğünüz gibi firstObject öğelerini kullanın. lastObject, arama ölçütlerinize göre eklenen son görevi bilmek istediğinizde kullanılabilir – yoshyosh

1

var duemunk gelen çözelti: func toArray<T>(ofType: T.Type) -> [T] { var array = [T]() for result in self { if let result = result as? T { array.append(result) } } return array }

: https://github.com/realm/realm-cocoa/issues/1046

Temelde [RLMObject] için RLMResults dönüştürmek

let tracks = Track.allObjects().toArray(Track.self) // tracks is of type [Track]

İlgili konular