2014-12-21 6 views
0

Обновленный/перефразировать вопрос:ALAssetsLibrary-CustomPhotoAlbum ИОС 8

В моем проекте я использую ALAssetsLibrary-CustomPhotoAlbum. Хотя он отлично работал на iOS 7, я никогда не замечал при кодировании для iOS 8, это закончилось нарушением. Сломанный, поскольку не удается воссоздать папки, которые были удалены с тем же именем.

Он создаст папку, если она начнется как новый процесс, если вы откроете приложение и попросите разрешение на фото.

Мой текущий код все еще сохраняет фото к указанной папке, если я создаю папку вручную:

[self.library saveImage:image toAlbum:@"NamedAlbum" withCompletionBlock:^(NSError *error) { 
     if (error!=nil) { 
      NSLog(@"Big error: %@", [error description]); 
     } 
    }]; 

То, что я застрял на следующий:

[self.library saveImage:image toAlbum:@"NamedAlbum" completion:nil failure:^(NSError *error) { 
    if (error!=nil) { 
     NSLog(@"Big error: %@", [error description]); 
    } 
}]; 

Оказывается, она изменила процесс завершения/отказа, и я не могу понять это.

Что мне нужно сделать, чтобы связать их с библиотекой?

Любая помощь будет оценена по достоинству.

ОБНОВЛЕНИЕ 12/22 Кажется, я опередил себя, отправляя свой ответ, это работает только иногда. Будут продолжать копать.

// The completion block to be executed after image taking action process done 
void (^completion)(NSURL *, NSError *) = ^(NSURL *assetURL, NSError *error) { 
    if (error) NSLog(@"!!!ERROR, write the image data to the assets library (camera roll): %@", 
        [error description]); 
    NSLog(@"*** URL %@ | %@ || type: %@ ***", assetURL, image, [assetURL class]); 

}; 

void (^failure)(NSError *) = ^(NSError *error) { 
    if (error == nil) return; 
    NSLog(@"!!!ERROR, failed to add the asset to the custom photo album: %@", [error description]); 
}; 

[self.assetsLibrary saveImage:image 
         toAlbum:albumName 
        completion:completion 
         failure:failure]; 

ответ

1

Хотя я действительно верю, что в SDK есть ошибка. То, что у меня ниже, похоже, отлично работает на моих 6+.

Это не может быть «правильный» способ, но это то, что работает на примере, который был предоставлен.

NSURL *imageURL = receivedURL; 
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]]; 
NSString *albumName = @"NamedAlbum"; 

// The completion block to be executed after image taking action process done 
void (^completion)(NSURL *, NSError *) = ^(NSURL *assetURL, NSError *error) { 

    if (error) NSLog(@"!!!ERROR, write the image data to the assets library (camera roll): %@", 
        [error description]); 
    NSLog(@"*** URL %@ | %@ || type: %@ ***", assetURL, image, [assetURL class]); 

}; 

void (^failure)(NSError *) = ^(NSError *error) { 
    if (error == nil) return; 
    NSLog(@"!!!ERROR, failed to add the asset to the custom photo album: %@", [error description]); 
}; 

[self.library saveImage:image 
         toAlbum:albumName 
        completion:completion 
         failure:failure]; 

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

 Смежные вопросы

  • Нет связанных вопросов^_^