Как перечислить группу ALAssets в Swift

Я старался изо всех сил, но я застрял здесь. Я хотел импортировать все фотографии из фотоальбома iPhone. Поэтому я придумал этот API ALAssestsLibrary.

photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: { group in if group != nil { } }, failureBlock: { error in println("\(error)")}) 

как добавить эту строку кода.

 group enumerateAssetsUsingBlock:groupEnumerAtion 

Я попытался добавить это, но он не показывает свойство enumerateAssetsUsingBlock.?

Это фактический код. !! В Objective-C

  dispatch_async(dispatch_get_main_queue(), ^ { @autoreleasepool { ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror) { NSLog(@"error occour =%@", [myerror localizedDescription]); }; ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NSUInteger index, BOOL *stop) { if (result!=NULL) { if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) { [self.g_imageArray addObject:result]; } } }; ALAssetsLibraryGroupsEnumerationResultsBlock libraryGroupsEnumeration = ^(ALAssetsGroup* group, BOOL* stop) { if (group == nil) { return; } if (group!=nil) { [group enumerateAssetsUsingBlock:groupEnumerAtion]; } [self updatephotoList]; }; self.library = [[ALAssetsLibrary alloc] init]; [self.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:libraryGroupsEnumeration failureBlock:failureblock]; } }); 

One Solution collect form web for “Как перечислить группу ALAssets в Swift”

У вашего enumerationBlock и failureBlock нет нужного типа. Например, блок перечисления определяется как

 typealias ALAssetsLibraryGroupsEnumerationResultsBlock = (ALAssetsGroup!, UnsafeMutablePointer<ObjCBool>) -> Void 

это означает, что аргумент является замыканием (ALAssetsGroup!, UnsafeMutablePointer<ObjCBool>) качестве параметров и возвращающим Void :

 { (group: ALAssetsGroup!, stop: UnsafeMutablePointer<ObjCBool>) -> Void in // ... } 

Таким образом, ваш код должен выглядеть так:

 photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: { (group: ALAssetsGroup!, stop: UnsafeMutablePointer<ObjCBool>) -> Void in if group != nil { group.enumerateAssetsUsingBlock({ (asset: ALAsset!, index: Int, stop: UnsafeMutablePointer<ObjCBool>) -> Void in // ... }) } }, failureBlock: { (myerror: NSError!) -> Void in println("error occurred: \(myerror.localizedDescription)") }) 

Из-за функции автоматического выбора типа Swift вы можете написать это также как

 photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: { group, stop in if group != nil { group.enumerateAssetsUsingBlock({ asset, index, stop in // ... }) } }, failureBlock: { myerror in println("error occurred: \(myerror.localizedDescription)") }) 

но в этом случае первая версия, вероятно, легче понять.

  • Как получить имя файла в uiimagepickercontroller с помощью библиотеки Asset?
  • Как передать переменные и объекты из подкласса через Segue в Swift 3.0
  • Как обновить пользовательский интерфейс с помощью результата JSON через обработчик завершения?
  • Что делать, если я хочу присвоить себе?
  • SWIFT - преобразовать строку в элемент UIKit
  • Шифрование и синхронизация iOS Swift Realm с сервером
  • При перетаскивании объекта в столкновение с другим объектом в наборе спрайтов не происходит подпрыгивания
  • Как вы создаете UIImage View Programmatically - Swift
  • Swift: UIButton против UIView
  • Realm Swift: как поймать RLMException?
  • Ошибка авторизации CLLocationManager iOS 8
  • Interesting Posts

    Предотвращение открытия универсальных ссылок в `WKWebView` /` UIWebView`

    Как создать небольшое всплывающее окно в iOS?

    Как вводить поддельные, закодированные или макетные зависимости для тестов интеграции с использованием Typhoon

    Получение черного экрана на симуляторе Watchkit и «Ожидание прикрепления» при добавлении к существующему проекту

    Как запустить синхронно две функции с асинхронными операциями в iOS с помощью Swift

    получить UDID устройства IOS программно?

    Как отключить / включить местоположение в swift

    AVPlayer Синхронизация с использованием setRate: время: atHostTime:

    Использование настраиваемого макета перехода при выполнении переходов между макетами и макетами

    MPMoviePlayerController Добавить пользовательскую кнопку воспроизведения

    Уровень AVAudioPlayer

    Отклонить 2 модальных контроллера

    Загрузите несколько изображений в swift с помощью Alamofire

    Пытается передать аргумент методу на жестов tap

    Swift: Тип XXX должен соответствовать протоколу 'NSObjectProtocol'

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.