从本地NSURL转换NSData

我有一个使用AVAudioPlayer类的声音播放器。 我在另一个视图中下载了一些项目,并将其文件path存储为NSURL,然后将NSURL传递给播放器视图控制器。 但是在尝试传递对象时出现错误。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString path]: unrecognized selector sent to instance 0x1700c86c0' 

这里是代码:

 NSData *data = [NSData dataWithContentsOfFile:[podcastSource path]]; NSError *error; mPlayer = [[AVAudioPlayer alloc] initWithData:data error:&error]; [mPlayer setDelegate:self]; if (mPlayer == nil) { NSLog(@"%@",error); } else { [self.player play]; .... } 

请注意,我从NSURL收到的filePath格式如下:

 /var/mobile/Applications/xxxxxx/Documents/90989.mp3 

从错误,似乎podcastSource是一个NSString,当它需要是NSUrl如果你要请求它的path。

但根据Apple Docs , dataWithContentsOfFile:接受一个NSString作为参数,所以不需要将podcastSource转换成NSUrl或者请求NSUrl的path。

如果podcastSource是整个文件名,这应该工作:

 NSData *data = [NSData dataWithContentsOfFile:podcastSource];