从本地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];