, , , , . PHAsset, , . , , , reduce , , .
( Swift 3 2.)
extension PHImageManager {
func requestMaximumSizeImage(for asset: PHAsset) -> Observable<UIImage> {
return .create { observer in
let request = self.requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: nil, resultHandler: { image, info in
if let image = image {
observer.onNext(image)
observer.onCompleted()
}
else if let info = info, let error = info[PHImageErrorKey] as? Error {
observer.onError(error)
}
})
return Disposables.create { self.cancelImageRequest(request) }
}
}
}
, PHImageManager , . , , , , . , JPEG. JPEG :
let imagesData = review.photos.toObservable().flatMap {
self.imageMgr.requestMaximumSizeImage(for: $0)
}.map {
UIImageJPEGRepresentation($0, 1.0)
}.filter { $0 != nil }.map { $0! }
, JPEG, , . imagesData - Observable<Data>.
getPostPhotoObservable , , , . , Observable , ReviewPhotoObject.
:
, , , ReviewPhotoObject , ( , . ) , concat flatMap.
- , . , -, - . catchErrorJustReturn, catchError .