2

問題があります

NSString *filePaht = [[NSBundle mainBundle] pathForResource:(NSString *)name ofType:(NSString *)ext];

使用した場合

NSString *filePaht = [[NSBundle mainBundle] pathForResource:@"soundName" ofType:@"aiff"];

大丈夫です。でも使った時

NSString *fileName = [[file.list objectAtIndex:index] objectForKey:@"soundName"];
NSString *filePaht = [[NSBundle mainBundle] pathForResource:fileName ofType:@"aiff"];

動作しません

何か考えがあります!?

ありがとう

4

3 に答える 3

6

file.listのfileNameにファイル拡張子が含まれていると推測します。したがって、存在しない「soundName.aiff.aiff」を検索しています。タイプに@""を渡すか、fileNameから拡張子を削除してみてください。

fileName = [fileName stringByDeletingPathExtension];
于 2010-05-04T17:11:21.390 に答える
1

何が間違っているかを示している可能性があるため、デバッガコンソールを確認してください。

[file.list objectAtIndex:index]

NSRangeExceptionが発生する場合indexは、配列の境界外にあるインデックスが含まれていることが原因である可能性があります。Cocoaの配列はシリアルであり、連想的ではないことに注意してください。オブジェクトを削除すると、その後に続くすべてのオブジェクトのインデックスが1減少し、0≤(すべての有効なインデックス)<(配列内のオブジェクトの数)という不変条件が維持されます。

また、。という名前の変数を宣言したことがないこと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ではありません)。

どちらの問題が発生していても、デバッガーを使用して調査できます。

于 2010-05-07T03:04:02.627 に答える
0

私のせいでごめんなさい。XMLファイルからデータを取得し、そのデータには「\n」が含まれています。はい、「\ n」が表示されているので、@ ""に置き換えますが、スペースの値を再度トリミングする必要があります。

すべてのアドバイスをありがとう^_^

于 2010-05-07T04:25:51.253 に答える