Blame view
App/camera/ALCameraLib/Utilities/ImageFetcher.swift
1.73 KB
1341bf603
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
// // ALImageFetchingInteractor.swift // ALImagePickerViewController // // Created by Alex Littlejohn on 2015/06/09. // Copyright (c) 2015 zero. All rights reserved. // import UIKit import Photos public typealias ImageFetcherSuccess = (PHFetchResult<PHAsset>) -> () public typealias ImageFetcherFailure = (NSError) -> () //extension PHFetchResult: Sequence { // public func makeIterator() -> NSFastEnumerationIterator { // return NSFastEnumerationIterator(self) // } //} public class ImageFetcher { private var success: ImageFetcherSuccess? private var failure: ImageFetcherFailure? private var authRequested = false private let errorDomain = "com.zero.imageFetcher" let libraryQueue = DispatchQueue(label: "com.zero.ALCameraViewController.LibraryQueue"); public init() { } public func onSuccess(_ success: @escaping ImageFetcherSuccess) -> Self { self.success = success return self } public func onFailure(_ failure: @escaping ImageFetcherFailure) -> Self { self.failure = failure return self } public func fetch() -> Self { _ = PhotoLibraryAuthorizer { error in if error == nil { self.onAuthorized() } else { self.failure?(error!) } } return self } private func onAuthorized() { let options = PHFetchOptions() options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] libraryQueue.async { let assets = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: options) DispatchQueue.main.async { self.success?(assets) } } } } |