Wie bekomme ich die letzten/ersten n Ergebnisse von RLMResults?Realm get last n Ergebnisse
Ich denke, Sie können zu NSArray umwandeln und dann - (NSArray *)subarrayWithRange:(NSRange)range;
tun, aber das ist ein schlechter Weg, wenn RLMResults viel zählen.
Auch können Sie so etwas wie:
self.arrayOfSubscriptedResults = [NSMutableArray new];
RLMResults *results = [[ModelRO objectsWhere:@"smth == 21"] sortedResultsUsingProperty:@"property" ascending:NO];
[self.arrayOfSubscriptedResults addObject: [results lastObject]];
[self.arrayOfSubscriptedResults addObject: [results objectAtIndex:(results.count - 1)]];
[self.arrayOfSubscriptedResults addObject: [results objectAtIndex:(results.count - 2)]];
aber dies wie eine Krücke.
Vielleicht mit Prädikat, aber kann nicht herausfinden, wie?
EDIT:
Endlösung:
RLMResults *results = getRealmResultsHere;
int count = results.count;
int numberOfFirstObjects = 3;
if (count > 0)
{
self.mutableArray = [NSMutableArray arrayWithCapacity: numberOfFirstObjects];
for (NSUInteger index = 0; (self.mutableArray.count < numberOfFirstObjects) && (count > index); index++)
{
[self.mutableArray addObject:results[index]];
}
}
ich so tat, fast. Aber in Ihrem Beispiel - was, wenn 'RLMResults * allDogs' weniger als 3 Objekte enthält? –
das hängt von Ihrer Situation ab. Willst du behaupten? oder geben Sie "höchstens" die Anzahl der gewünschten Artikel an. ganz bei dir – jpsim