2015-01-29 6 views
0

Это как мой assests-видео библиотеки URL есть активы библиотека: //asset/asset.mov ID = 6EDBB011-3C29-4502-A688-5467E420376A & внутра = мы.NSFileHandler возвращает ноль для активов библиотеки URL видео

Но когда я передаю этот URL-адрес NSFileHandler, он возвращает nil с ошибкой.

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

Ошибка,

Ошибка Домен = NSCocoaErrorDomain код = 2 "Операция не может быть завершена . (Cocoa ошибка 2.)" UserInfo = 0x15dbc0c0 {NSFilePath =/актив. мы}.

Как решить проблему?

+0

Показать, как вы получаете URL-адрес? – user523234

+0

Вы не можете загрузить ресурсы библиотеки alasset таким образом. Вам нужно использовать класс ALAssetLibrary и его методы для загрузки изображений. –

ответ

0

URL-адрес действителен только в том случае, если выделена библиотека AlassetsLibrary. Проверьте, что ваша ALAssetsLibrary по-прежнему не нуль, когда вы пытаетесь получить доступ к URL-адресу с помощью дескриптора файла.

Добавлено

В такого рода случае, вы можете использовать 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].

+0

Этот URL-адрес Im, отправляемый из другого класса. – rishu1992

+0

Используя тот же URL-адрес, я открываю это видео в приложении Instagram. Если URL-адрес недействителен, как он открывается в приложении Instagram? – rishu1992

-1

Я решил эту проблему, сохранив видео в библиотеке ресурсов во временное местоположение и используя этот путь к NSFileHandle. Я думаю, что его невозможно отправить в UDP-путь утверждения NSFileHandle.

+0

Плохое решение, так как оно дублирует файлы без необходимости. Как сказал Мидхун, вы должны использовать «ALAssetLibrary» для взаимодействия с активами в библиотеке. –