iOS看似相同的字符串具有不同的行为

时间:2012-08-20 16:04:10

标签: ios audio wave

我在数组中存储WAV文件名,包括扩展名。当我尝试加载它时,需要删除扩展名。如果我将扩展名的字符串子串起来,那么看似相同的字符串在硬编码时工作正常。

我也尝试使用 stringByDeletingPathExtension 方法,同样崩溃。

此代码导致崩溃

NSString *fileName = [[currentWord.audioFile componentsSeparatedByString:@"."] objectAtIndex: 0];
SFCLog(@"fileName: %@",fileName);
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"wav"];
CFURLRef BaseURL = (__bridge CFURLRef)[NSURL fileURLWithPath:path];

-[ViewController loadWord] [line 143] fileName:  owe_fr
2012-08-20 17:50:21.561 Hello[8053:16a03] *** Terminating app due to uncaught exception     'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string   parameter'

但此代码执行

NSString *fileName = @"owe_fr";
SFCLog(@"fileName: %@",fileName);
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"wav"];    
CFURLRef fluentBaseURL = (__bridge CFURLRef)[NSURL fileURLWithPath:path];

1 个答案:

答案 0 :(得分:0)

好的,我找到了。存储的文件名版本中的前导空格 - 您可以在日志语句中看到它。我通过这样的记录找到它(标记到字符串的任一侧):

SFCLog(@"fileName :%@:",fileName);

记录为:

-[ViewController loadWord] [line 144] fileName : about_fr:

干杯, 肖恩