我正在使用MPMediaPickerController
上传音乐文件。当我尝试将MPMediaItem
转换为NSData
时,NSData
始终返回NULL。
这是我的代码:
- (IBAction)addMusic:(id)sender {
MPMediaPickerController *soundPicker=[[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic];
soundPicker.delegate=self;
soundPicker.allowsPickingMultipleItems=NO;
[self presentViewController:soundPicker animated:YES completion:nil];
}
- (void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection{
MPMediaItem *item = [[mediaItemCollection items] objectAtIndex:0];
NSURL *url = [item valueForProperty: MPMediaItemPropertyAssetURL];
NSString *audioFilePath = [NSString stringWithFormat:@"%@",url];
NSData *audioData = [NSData dataWithContentsOfFile:audioFilePath];
[self dismissViewControllerAnimated:YES completion:nil];
}
请建议我如何将MPMediaItem
转换为NSData
。
答案 0 :(得分:0)
你的问题在于以下三行:
NSURL *url = [item valueForProperty: MPMediaItemPropertyAssetURL];
NSString *audioFilePath = [NSString stringWithFormat:@"%@",url];
NSData *audioData = [NSData dataWithContentsOfFile:audioFilePath];
尝试做:
NSURL *url = [item valueForProperty: MPMediaItemPropertyAssetURL];
NSError *error = nil;
NSData *audioData = [NSData dataWithContentsOfURL:url options:nil error:&error];
if(!audioData)
NSLog(@"error while reading from %@ - %@", [url absoluteString], [error localizedDescription]);
看看它是否更好。
如果您感兴趣,那么第一个代码块出现了问题,[NSString stringWithFormat:@"%@",url]
可能会给出一个nil结果,因为url是一个NSURL对象,NSString的格式需要一个NSString对象。