Skip to content

iOS 26 will remove ALAssetsLibrary. When do you expect to provide a compatible version? #1356

@LaoMaRen

Description

@LaoMaRen
public func promise(_ vc: UIImagePickerController, animated: Bool = false, completion: (() -> Void)? = nil) -> Promise<NSData> {
    let proxy = UIImagePickerControllerProxy()
    vc.delegate = proxy

    present(vc, animated: animated, completion: completion)

    return proxy.promise.then(on: nil) { info -> Promise<NSData> in
    #if swift(>=4.2)
        let url = info[.referenceURL] as! URL
    #else
        let url = info[UIImagePickerControllerReferenceURL] as! URL
    #endif
        
        return Promise { seal in
            ALAssetsLibrary().asset(for: url, resultBlock: { asset in
                let N = Int(asset!.defaultRepresentation().size())
                let bytes = UnsafeMutablePointer<UInt8>.allocate(capacity: N)
                var error: NSError?
                asset!.defaultRepresentation().getBytes(bytes, fromOffset: 0, length: N, error: &error)

                if let error = error {
                    seal.reject(error)
                } else {
                    seal.fulfill(NSData(bytesNoCopy: bytes, length: N))
                }
            }, failureBlock: { seal.reject($0!) } )
        }
    }.ensure {
        self.dismiss(animated: animated, completion: nil)
    }
}

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions