檢查調試器控制檯,因爲它可能會告訴你正在做的事情是錯誤的。
[file.list objectAtIndex:index]
如果你得到一個NSRangeException,這可能是因爲index
包含索引是數組的界限之外。請記住Cocoa中的數組是串行的,而不是關聯的;如果你刪除了一個對象,它後面的所有對象的索引將下降1,並支持0≤(每個有效索引)<(數組中對象的數量)的不變量。
也可能是因爲you never declared a variable named index
。
NSString *fileName = [[file.list objectAtIndex:index] objectForKey:@"soundName"];
NSString *filePaht = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aiff"];
如果什麼也沒有發生,或者你得到一個NSInternalInconsistencyException,它可能是一個:
fileList
是nil
。
- 從
[file.list objectAtIndex:index]
返回的字典沒有密鑰soundName
的對象。
如果你有在控制檯「不響應選擇」的消息,它可能是一個:
file.list
是一個對象,而不是一個NSArray。
[file.list objectAtIndex:index]
不是NSDictionary。
fileName
([[file.list objectAtIndex:index] objectForKey:@"soundName"]
)不是NSString。
請記住,聲明變量時使用的類名除了編譯器外無關緊要;在運行時,它只是一個持有指向對象的指針的變量。該對象可以是任何類。將不是NSString的東西放入NSString *
變量是完全有效的;它只是承擔了非常高的(幾乎確定的)錯誤行爲風險和/或隨後崩潰的風險。
這樣的崩潰通常會以「不響應選擇器」異常的形式出現(例如,在某些事件向對象發送NSString對象應該響應的消息之後,但該對象不響應因爲它不是NSString)。
您遇到哪種問題,您可以使用the Debugger進行調查。
該問題似乎與'文件名',但很難說沒有更多的代碼。什麼是'file.list',它是如何初始化的? – 2010-05-04 17:01:44
「這不是工作」你有什麼具體問題? – 2010-05-07 02:50:12