2014-11-25 6 views
12

Ben bir RLMArray üzerinde nesneleri ile sorgulamaWhere ve bir RLMResults alıyorum, ancak kodumdaki bu noktaya bir sonuçla bir RLMArray'a ihtiyacım var.RLMResults RLMArray dönüştürme

private var data: RLMArray? 

self.data = self.currentSubcategory!.datasheets // is a RLMArray 
self.data = self.data!.objectsWhere("is_favourite = 1") 

cevap

11

RLMArray iki sınıfa bölünmüş durumda: RLMArray ve RLMResults. RLMArray artık yalnızca RLMObject sınıfları için çok fazla özellik için kullanılır, RLMResults tüm RLMResults sorgulama ve sıralama yöntemleri için kullanılır. Bu, iki 'un aslında oldukça farklı API'lere sahip olduğunu (örneğin, RLMResults'un 'un addObject: içermediğini) ve sorgularda değişiklik bildirimleri ekledikçe daha fazla ayrılmaları beklenir.

bunun için göç derleyici hakkında şikayet yerlerde tüm RLMResults ile RLMArray değiştirilmesi kadar basit olmalıdır. Bu uysun diye

, arraySortedByProperty:ascending:sortedResultsUsingProperty:ascending: için yeniden adlandırıldı ve addObjectsFromArray: sen kendisine herhangi enumerable nesne geçirebilirsiniz gerçeğini yansıtmak için addObjects: olarak değiştirilmiştir (örneğin NSArray, RLMArray veya RLMResults gibi) .

Kaynak: http://realm.io/news/realm-cocoa-0.87.0/#rlmresults

Umut

+3

, bu değişikliklerle bu blog yazısı güncelleyin. https://realm.io/news/tutorial-building-a-todo-app-with-realm/ Büyük çerçeve, ancak belgeleme şu anda biraz parçalanmış durumda. –

4
let datasheets = self.currentSubcategory!.datasheets!.objectsWhere("is_favourite = 1") 
let objects = Array(datasheets.generate()) 

self.data!.removeAllObjects() 
self.data!.addObjects(objects) 

Değişiklik yaptıktan self.data!.removeAllObjects() hat canlı güncelleme RLMResults beri datasheets da açıktır çünkü gereklidir sonuçların dizi oluşturma yeter kaynağa Sen RLMArray için RLMResult nesneleri eklemeniz gerekir

6

... benim gibi gelecekteki Diyar başlayanlar için

@implementation RLMResults (RLMArrayConversion) 

- (RLMArray *)toArray { 
    RLMArray * array = [[RLMArray alloc] initWithObjectClassName:self.objectClassName]; 
    [array addObjects:self]; 
    return array; 
} 

@end