Überprüfen Sie Ihre Debugger-Konsole, da sie Ihnen möglicherweise sagt, was Sie falsch machen.
[file.list objectAtIndex:index]
Wenn Sie eine NSRangeException erhalten, kann das daran liegen, dass index
einen Index enthält, der außerhalb der Grenzen des Arrays liegt. Denken Sie daran, dass Arrays in Cocoa seriell und nicht assoziativ sind. Wenn Sie ein Objekt entfernen, werden die Indizes aller nachfolgenden Objekte um 1 verringert, wobei die Invariante 0 (jeder gültige Index) < (Anzahl der Objekte im Array) eingehalten wird.
Es könnte auch daran liegen, dass Sie haben nie eine Variable mit dem Namen index
.
NSString *fileName = [[file.list objectAtIndex:index] objectForKey:@"soundName"];
NSString *filePaht = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aiff"];
Wenn nichts passiert oder Sie eine NSInternalInconsistencyException erhalten, könnte es sich um einen der folgenden Fälle handeln:
fileList
es nil
.
- Das Wörterbuch, das von
[file.list objectAtIndex:index]
nicht über ein Objekt für den Schlüssel soundName
.
Wenn Sie in der Konsole die Meldung "Reagiert nicht auf Selektor" erhalten, kann es sich um einen der folgenden Fälle handeln:
file.list
ist ein Objekt, aber kein NSArray.
[file.list objectAtIndex:index]
ist kein NSDictionary.
fileName
( [[file.list objectAtIndex:index] objectForKey:@"soundName"]
) nicht ein NSString ist.
Denken Sie daran, dass der Klassenname, den Sie bei der Deklaration der Variablen verwenden, nur für den Compiler von Bedeutung ist; zur Laufzeit ist es einfach eine Variable, die einen Zeiger auf ein Objekt enthält. Das Objekt kann von jeder Klasse sein. Es ist durchaus zulässig, etwas, das kein NSString ist, in eine NSString *
variabel; es birgt einfach ein sehr hohes (fast sicheres) Risiko eines falschen Verhaltens und/oder eines Absturzes kurz danach.
Ein solcher Absturz äußert sich in der Regel in Form einer "does not respond to selector"-Ausnahme (nachdem dem Objekt eine Nachricht gesendet wurde, auf die z. B. NSString-Objekte reagieren sollten, auf die das Objekt aber nicht reagiert, weil es kein NSString ist).
Welches Problem Sie auch immer haben, Sie können die der Debugger zu untersuchen.
1 Stimmen
Das Problem scheint zu sein, dass
fileName
aber es ist schwer zu sagen, ohne mehr Code. Was istfile.list
und wie wird sie initialisiert?0 Stimmen
"Es funktioniert nicht" Welches spezifische Problem haben Sie?