成功登录后,我想获取特定属性的值。是否可以在不迭代每个属性的情况下执行此操作?我知道我不能下标,但是还有其他方法吗?
因此,在下面的示例中,我想要的是用户电子邮件的值。理想情况下,我想说let email = userAttributes["email"]
,但是这种类型不允许订阅。
user?.getDetails().continueOnSuccessWith(block: { (task) -> Any? in
let userAttributes = task.result?.userAttributes
for attribute in userAttributes! {
print(attribute.name!)
print(attribute.value!)
}
return nil
})
最佳答案
看到AWSCognitoIdentityProviderAttributeType
既包含名称又包含值,我们可以轻松地在该数据上映射以创建可以由键值访问的字典。
将此扩展名添加到某处
extension Array where Element: AWSCognitoIdentityProviderAttributeType {
func dict() -> [String : String] {
var dict: [String : String] = [:]
self.forEach({ e in dict[e.name!] = e.value! })
return dict
}
}
然后使用
task.result?.userAttributes.dict()[...]
关于ios - 调用用户后如何从AWS Cognito用户池中获取特定属性?.getDetails调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49313586/