Как узнать, что NSURL для ALAsset в библиотеке активов существует?

Если я хранил URL-адрес фотоизображения в библиотеке фотографий (ALAsset) в своей базе данных в течение нескольких дней, как я узнаю, что эта фотография все еще существует в библиотеке фотографий по ее NSURL?

Я пробовал это, но это не сработало:

// Have already obtained the asset object from ALAssetsLibrary
NSURL *assetURL = [[(ALAsset*)asset defaultRepresentation] url];
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: [assetURL absoluteString]];
NSLog(@"exists: %d (%@)", exists, [assetURL absoluteString]);

>> exists: 0 (assets-library://asset/asset.PNG?id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&ext=PNG)

person Xaree Lee    schedule 11.09.2013    source источник
comment
NSURL *myURL = [NSURL URLWithString:@url идет сюда] NSString *path = [myURL absoluteString];   -  person Tendulkar    schedule 11.09.2013


Ответы (1)


Попробуйте это как ваше требование. Проверь это

dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    __block BOOL flag=YES;
    ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
    [assetslibrary assetForURL:path resultBlock:^(ALAsset *asset) {
        if (asset==nil)
        {
            flag=NO;
        }
        else
        {
            flag=YES;
        }
            dispatch_group_leave(group);
        } failureBlock:^(NSError *error){
                NSLog(@"operation was not successfull!");
                dispatch_group_leave(group);
    }];
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
    dispatch_release(group);
person Shyam Dixit    schedule 11.09.2013
comment
Я сделал эту реализацию, но она застряла на строке dispatch_group_wait(group, DISPATCH_TIME_FOREVER); . Этот метод может быть вызван, когда другой объект библиотеки ALAssetsLibrary занят. Я думаю, что для его обработки может потребоваться другой поток или очередь отправки. Верно? - person Xaree Lee; 12.09.2013
comment
Я нашел ответ с использованием семафора GCD, который решает мою проблему. - person Xaree Lee; 12.09.2013
comment
Хороший вопрос и усилия также. - person Shyam Dixit; 12.09.2013