2013-10-17 7 views
7

Ich habe eine Sammlung von int64_t Werten, die ich brauche um einen Index zu erstellen. Ich habe früher verwendet:Erstelle einen NSRange mit einem gegebenen minimalen und maximalen Wert

NSIndexSet *set = [NSIndexSet indexSetWithRange:NSMakeRange(location, length)]; 

Indexmengen zu machen, aber diesmal hat mir nicht klar, wie ich dies tun würde auf der Grundlage der Informationen, die ich habe.

Besonderheiten: Ich habe eine Sammlung von Werten. Ich kenne den höchsten Wert in der Sammlung, den niedrigsten Wert in der Sammlung und die Anzahl der Werte in der Sammlung. Die Werte sind jedoch nicht notwendigerweise aufeinanderfolgend.

Zum Beispiel, wenn ich die folgenden Werte habe: 1,3,4,6,7,9 Ich möchte eine Menge erstellen, die alle Zahlen in der Sammlung zwischen und einschließlich 1 und 9 enthält, dh set = 1 -9.

Wie würde ich das tun?

bearbeiten

Ich sollte nicht sagen, dass ich eine „Sammlung“ von ganzen Zahlen haben, sondern - ich Objekte in Kerndaten gespeichert sind und jedes Objekt hat eine int64_t Attribut mit ihm verbunden, so dass ich nicht habe einen Zeiger auf eine tatsächliche Sammlung der Objekte, und ich möchte verhindern, dass die Objekte abgerufen werden, nur um eine Sammlung zu erstellen.

+0

So die Indexmenge der Indizes enthalten sollte 1,3,4,6,7,9? Oder habe ich deine Frage missverstanden? –

+0

Ja, also frage ich mich, wie ich den Bereich 1-9 erstellen würde, um das zu erreichen. – jac300

Antwort

13

Bearbeiten: Wie sich in der Diskussion herausstellte, war die Frage, wie man einen Bereich mit einem gegebenen minimalen und maximalen Wert erstellen. Dies geschieht mit

NSMakeRange(min, max + 1 - min) 
+0

Sorry, ich glaube ich war in meiner Frage nicht klar. Ich habe gerade einen Schnitt gemacht. – jac300

+0

Danke - ich denke meine Frage ist viel einfacher als das - ich habe die Max- und Min-Werte bereits, ich sehe nur nicht, wie man einen Bereich mit einem Min- und Max-Wert erstellt. – jac300

+1

@ user1697845: 'NSMakeRange (min, max + 1 - min)'? –

0

Nur eine NSMutableIndexSet verwenden und fügen Sie sie eins nach dem anderen mit der Methode addIndex

0

Man könnte so etwas tun:

NSArray *array = @[@1,@3,@4,@6,@7,@9]; 

NSMutableIndexSet *set = [[NSMutableIndexSet alloc] init]; 
for (NSNumber *value in array) { 
    [set addIndex:[value integerValue]]; 
} 
Verwandte Themen