Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
NSRange, Teil 3

Obwohl eine NSRange ein sehr einfache Struktur ist, gibt es vielfältige Möglichkeiten für den Einsatz. Berechnungen, die man normalerweise von Hand machen müsste, werden einem durch Methoden aus dem Foundation Framework abgenommen,

So können Sie zum Beispiel eine NSRange erzeugen, die den Teil enthält, in dem sich zwei NSRange überschneiden. Im englischen nennt man so eine Überschneidung intersection und die Methode, um auf diese Art eine Range zu erzeugen, heissen deshalb NSIntersectionRange.
NSRange range1 = NSMakeRange(0,5);
NSRange range2 = NSMakeRange(
3,8);
NSRange range3 = NSIntersectionRange(range1,range2);
Wollen Sie hingegen eine Range erstellen, die den Bereich zweier schon vorhandener Objekte bildet, dann ist NSUnionRange die Methode die Sie brauchen.
NSRange myRange1 = NSMakeRange(2,1);
NSRange myRange2 = NSMakeRange(
5,4);
NSRange myRange3 = NSUnionRange(myRange1, myRange2);
Des Weiteren besteht die Möglichkeit, ein Range aus einem NSString zu erzeugen. Die Methode NSRangeFromString sucht nach Ganzzahlen im Text und erzeugt daraus Daten für ein NSRange Objekt.
NSString *myText = @"1 12";
NSRange range1 = NSRangeFromString(myText);
Das funktioniert sogar, wenn Sie die Zahlen im Text „verstecken“.
NSString *myText = @"Start 1 Anzahl 12";
NSRange range1 = NSRangeFromString(myText);
Falls Sie es benötigen, gibt es so eine Konvertierung auch in die andere Richtung. Eine NSString aus einer NSRange zu erzeugen, ist nicht weiter schwer.
NSRange myRange = NSMakeRange(2,3);
NSString *myText = NSStringFromRange(myRange);
NSLog(@"%",myText);
Wollen Sie zwei NSRange-Objekte vergleichen, also vergleichen, ob Startpunkt und Länge identisch sind, so können Sie das mit NSEqualRanges.
NSRange myRange1 = NSMakeRange(5,4);
NSRange myRange2 = NSMakeRange(
5,4);
bool b = NSEqualRanges(myRange1,myRange2);
if(b == YES)
{
    NSLog(
@"identisch");
}
Die Überprüfung, ob ein bestimmter Punkt innerhalb einer Range liegt, geschieht mit NSLocationInRange.
NSRange myRange = NSMakeRange(0,4);
bool b = NSLocationInRange(
2,myRange);
if(b == YES)
{
    NSLog(
@"in Range");
}
Einige sehr nützliche Funktionen und Methoden haben Sie in diesem und den vorherigen Kapiteln kennengelernt. Wie immer gilt: Experimentieren Sie! Die Manipulation von Zeichenketten finden Sie in sehr vielen Programmen und auch in den folgenden Kapiteln werden Sie einiges davon wiedererkennen.