ios - [NSURL initFileURLWithPath :]: nil string parameter with ARC

标签 ios

我遇到了问题

NSInvalidArgumentException nil string parameter when trying to use AudioFileCreateWithURL

问题是,fileURL 打印到 NSLog 是正确的。我相信这是正确的格式:

file://localhost/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/1A617C0D-90CC-465C-9108-ECBCF85F075C/Documents/recording.wav

我猜 __bridge 转换可能是导致问题的原因。

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask, YES);
    NSString* docDir = [paths objectAtIndex:0];
    NSString* file = [docDir stringByAppendingString:@"/recording.wav"];
    NSURL *fileURL = [NSURL fileURLWithPath:file];
    NSLog(@"%@", fileURL);
    OSStatus audioErr = noErr;
    audioErr = AudioFileCreateWithURL( (__bridge CFURLRef)fileURL, kAudioFileWAVEType, &asbd, kAudioFileFlags_EraseFile, &audioFile);

我正在使用 ARC。我也试过这个:

audioErr = AudioFileCreateWithURL( (CFURLRef)CFBridgingRetain(fileURL), kAudioFileWAVEType, &asbd, kAudioFileFlags_EraseFile, &audioFile);

它引起了同样的异常。

最佳答案

你看过http://lists.apple.com/archives/coreaudio-api/2010/Aug/msg00210.html了吗? ?他们使用 CFStringRef 让它工作。

// We have to encode spaces before sending it to CFURLCreateWithString. See CFURLCreateWithString returns NULL article http://markmail.org/message/5ugub2dvdaausdvf
    CFStringRef fileName = (CFStringRef) recordedFile; 
    CFStringRef fileNameEscaped = CFURLCreateStringByAddingPercentEscapes(NULL, fileName, NULL, NULL, kCFStringEncodingUTF8); 

    // Create the URL
    self.url = "" (CFStringRef)fileNameEscaped, NULL);    
    CHECK_NIL(url);

    // Create audio file
    OSStatus status = AudioFileCreateWithURL(url, kAudioFileWAVEType, &format, kAudioFileFlags_EraseFile, &audioFile);
    NSAssert(status == noErr, @"AudioFileCreateWithURL fails");

关于ios - [NSURL initFileURLWithPath :]: nil string parameter with ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13847670/

相关文章:

ios - UIPopoverPresentationController 淡入

ios - 分发 Passkit 通行证

ios - IBOutlet 未在 SWIFT 中连接

ios - 完成 block 处理空数组

ios - 是什么让用户可以被 CKDiscoverAllUserIdentitiesOperation 发现?

iOS:GLPaint 无法在大框架上绘制

ios - 删除 UICollectionView 中的最后一个单元格会导致崩溃

ios - 使用 CAKeyframeAnimation 反转 UIImageView 的旋转

iphone - 如何在 iOS 中创建不在 Unicode 中的下标字符

ios - 动画开始缓慢并随着时间的推移变得更快 ios Swift