我正在学习Objective C,我正在学习本书的例子。但是在某些例子中我不断收到此错误!我完全按照步骤,请帮忙!我已经尝试将iOS模拟器恢复到默认设置,但仍然没有运气。
这是一个可以录制声音并播放的应用程序。这是代码......
- (IBAction)recordAudio:(id)sender {
if ([self.recordButton.titleLabel.text isEqualToString:@"Record Audio"]){
[self.audioRecorder record];
[self.recordButton setTitle:@"Stop Recording"
forState:UIControlStateNormal];
} else {
[self.audioRecorder stop];
[self.recordButton setTitle:@"Record Audio"
forState:UIControlStateNormal];
// Load the new sound in the audioplayer for playback
NSURL *soundFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
stringsByAppendingPaths:@"sound.caf"]];
self.audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:soundFileURL error:nil];
}
}
答案 0 :(得分:1)
我运行了部分代码,这是错误消息:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '***
-[__NSCFString stringsByAppendingPaths:]: paths argument is not an array'
正如文档所述,stringsByAppendingPaths返回一个NSArray的NSString对象,它通过将NSArray的每个NSString分别附加到接收器的路径中而形成。 @“sound.caf”是一个NSString,而不是NSArray,它引发了异常。
更改以下内容:
NSURL *soundFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
stringsByAppendingPaths:@"sound.caf"]];
要:
NSURL *soundFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
stringByAppendingPathComponent:@"sound.caf"]];
它应该有用。