import Foundation import PhotosUI //From: https://stackoverflow.com/a/69755543 public class PHFetchResultCollection: RandomAccessCollection, Equatable { public typealias Element = T public typealias Index = Int let fetchResult: PHFetchResult public var endIndex: Int { fetchResult.count } public var startIndex: Int { 0 } public init() { self.fetchResult = PHFetchResult() } public init(fetchResult: PHFetchResult) { self.fetchResult = fetchResult } public subscript(position: Int) -> T { fetchResult.object(at: fetchResult.count - position - 1) } public static func == (lhs: PHFetchResultCollection, rhs: PHFetchResultCollection) -> Bool { return lhs.fetchResult == rhs.fetchResult } } // Type aliases for convenience and backward compatibility //public typealias PHFetchResultAssetCollection = PHFetchResultCollection //public typealias PHFetchResultAssets = PHFetchResultCollection // Mock subclass for testing public final class PHFetchResultCollectionMock: PHFetchResultCollection { private let mockArray: [T] public override var endIndex: Int { mockArray.count } public init(_ array: [T]) { self.mockArray = array super.init() } public override subscript(position: Int) -> T { mockArray[mockArray.count - position - 1] } } // Convenience type alias for PHAssetCollection mocks public typealias PHFetchResultAssetCollectionMock = PHFetchResultCollectionMock