Substring mit Bereich außerhalb der Grenzen?

7

Okay, das ist ein bisschen verwirrend (gut zu mir). Ich habe eine Zeichenfolge, die eine einzige Nummer hat, die ich daraus haben möchte. Ich habe diese Nummer mit '/' umgeben, damit ich später die Nummer herausholen kann.

Hier ist, wie ich die Nummer rausbekomme:

%Vor%

Es stürzt ständig ab und die Konsole sagt:

  

* Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSRangeException', Grund: '- [__ NSCFString substringWithRange:]: Bereich oder Index außerhalb der Grenzen'   * Erster Aufrufstapel:   (0x1875d72 0x106ce51 0x1875b4b 0x184ea64 0x3a6c 0x1080713 0x1bf59 0x1bef1 0xd532e 0xd588c 0xd49f5 0x49a2f 0x49c42 0x290fe 0x1b3fd 0x17d2f39 0x17d2c10 0x17ebda5 0x17ebb12 0x181cb46 0x181bed4 0x181bdab 0x17d1923 0x17d17a8 0x18e71 0x200D 0x1f35)   libc ++ abi.dylib: beende das Beenden einer Ausnahme

Aus meiner Zählung ist der Bereich innerhalb der Grenzen, ich verstehe nicht, warum ich diesen Fehler bekomme?

Jede Hilfe wäre willkommen.

Danke

    
Jacob 21.06.2012, 04:25
quelle

4 Antworten

24

Ihr NSMakeRange (Start, Ende) sollte NSMakeRange (Start, Endstart) sein;

    
user523234 21.06.2012, 04:45
quelle
6

Ich denke, Sie haben Verwirrung in der Syntax von NSMakeRange. Es ist so etwas wie

%Vor%

<#NSUInteger loc#>: Dies ist der Ort, an dem Sie mit der Auswahl oder Teilzeichenfolge beginnen möchten.

<#NSUInteger len#>: Dies ist die Länge Ihrer Ausgabe oder Teilzeichenfolge.

Beispiel:

Mytest12test

Jetzt möchte ich '12 '

auswählen

so:

%Vor%

In Ihrem Code anstelle der Länge übergeben Sie den Index des Endzeichens, das ist Ihr Fehler.

    
Iducool 21.06.2012 04:46
quelle
2

Ich weiß nicht, warum Sie diesen Ansatz verwenden, aber iOS bietet eine String-Funktion, die eine Zeichenkette in Bezug auf eine andere Zeichenkette trennt und ein Array der Komponenten zurückgibt. Siehe das folgende Beispiel:

%Vor%

Jetzt sollte Ihr Komponentenstring 2 Speicher enthalten.

    
Saleh 21.06.2012 04:35
quelle
1

Wenn der Compiler diesen Code ausführt ...

%Vor%

... In der letzten Iteration der Schleife wird die Endvariable auf einen more und dann auf den Bereich von MYSTRING gesetzt. Deshalb erhalten Sie diesen Fehler. Um es zu beheben, tun Sie das einfach:

%Vor%

Hoffe, das hilft!

P.S. Salehs Ansatz ist ein einfacher Weg, um das zu erreichen, was Sie wollen

------ UPDATE ------

Sie sollten es tatsächlich so machen:

%Vor%     
pasawaya 21.06.2012 04:41
quelle

Tags und Links