我的理解是,当执行CKDiscoverUserIdentitiesOperation
时,仅在实际找到用户身份时才调用userIdentityDiscovered
块。 (我认为这是指与iCloud帐户关联的电话号码或电子邮件地址。)
相反,当我执行此操作时,它会为列表中的每个条目调用userIdentityDiscovered
块。
此外,当该帐户确实无效时,该块中的user
参数会返回未初始化。
我做错了什么?
var emailInfos: [CKUserIdentityLookupInfo] = []
for email in contact.emailAddresses {
emailInfos.append(CKUserIdentityLookupInfo(emailAddress: email.value as String))
}
var phoneInfos: [CKUserIdentityLookupInfo] = []
for phone in contact.phoneNumbers {
let phoneNumber = phone.value.stringValue
phoneInfos.append(CKUserIdentityLookupInfo(phoneNumber: phoneNumber))
}
let lookupInfos = emailInfos + phoneInfos
let op = CKDiscoverUserIdentitiesOperation(userIdentityLookupInfos: lookupInfos)
op.discoverUserIdentitiesCompletionBlock = { error in
print("*** Complete")
}
op.userIdentityDiscoveredBlock = { (user, userLookupInfo) in
print("*** found user: \(userLookupInfo)")
}
CKContainer.default().add(op)
*** found user: <CKUserIdentityLookupInfo: 0x618000270b40; email=notarealemail@notarealdomain.sldfkjsdaflskfjsdlkjf.com>
*** found user: <CKUserIdentityLookupInfo: 0x608000274600; phone=(555) 555-5555>
*** Complete
uninitialized
*** found user: <CKUserIdentityLookupInfo: 0x600000266d40; email=notarealemail@notarealdomain.sldfkjsdaflskfjsdlkjf.com>
(lldb) po user
<uninitialized>
(lldb)