我正在创建一个联系人类来异步获取用户的电话号码。
我创建了 3 个利用新组合框架的 Future 的函数。
func checkContactsAccess() -> Future<Bool, Never> {
Future { resolve in
let authorizationStatus = CNContactStore.authorizationStatus(for: .contacts)
switch authorizationStatus {
case .authorized:
return resolve(.success(true))
default:
return resolve(.success(false))
}
}
}
Run Code Online (Sandbox Code Playgroud)
func requestAccess() -> Future<Bool, Error> {
Future { resolve in
CNContactStore().requestAccess(for: .contacts) { (access, error) in
guard error == nil else {
return resolve(.failure(error!))
}
return resolve(.success(access))
}
}
}
Run Code Online (Sandbox Code Playgroud)
func fetchContacts() -> Future<[String], Error> {
Future { resolve in
let contactStore = CNContactStore()
let keysToFetch …Run Code Online (Sandbox Code Playgroud)