NSFileHandler为资产库视频网址返回nil

时间:2015-01-29 07:24:58

标签: ios objective-c assets alassetslibrary filehandle

这就是我的assests-library视频网址, assets-library://asset/asset.mov?id = 6EDBB011-3C29-4502-A688-5467E420376A&amp; ext = mov 。< / p>

但是当我将此URL传递给NSFileHandler时,它会返回nil并显示错误。

 NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingFromURL:mediaURL error:&error];

错误是,

  

错误域= NSCocoaErrorDomain代码= 2&#34;操作不可能   完成。 (可可错误2。)&#34;的UserInfo = 0x15dbc0c0   {NSFilePath = / asset.mov}。

如何解决问题?

2 个答案:

答案 0 :(得分:0)

只有在分配AlassetsLibrary时,该URL才有效。当您尝试使用文件句柄访问URL时,检查您的ALAssetsLibrary仍然不是。

<强>加

在这种情况下,您可以使用singleton模式。

·H

@interface AssetsHelper : ALAssetsLibrary
+ (ALAssetsLibrary *)shared;
@end

的.m

@implementation AssetsHelper
+ (ALAssetsLibrary *)shared {
    static ALAssetsLibrary *library = nil;
    static dispatch_once_t onceToken = 0;
    dispatch_once(&onceToken, ^{
        library = [[ALAssetsLibrary alloc] init];
    });
    return library;
}
@end

然后,只要您拨打ALAssetsLibrary,就可以获得相同的[ALAssetsHelper shared]个实例。

答案 1 :(得分:-1)

我通过将资源 - 图书馆视频保存到临时位置并使用NSFileHandle的位置路径解决了这个问题。我想不可能将断言URl路径发送到NSFileHandle。