【问题标题】:iOS How to add credential to ASCredentialIdentityStoreiOS 如何将凭据添加到 ASCredentialIdentityStore
【发布时间】:2021-09-20 06:42:49
【问题描述】:

iOS 使用ASCredentialIdentityStore 来保存凭据身份,并为用户提供点击它们并获取各自凭据的机会。

save credential identities 到 ASCredentialIdentityStore 的正确语法是什么?

我试过这样:

let store = ASCredentialIdentityStore.shared
let passwordIdentity = ASPasswordCredentialIdentity(serviceIdentifier: ASCredentialServiceIdentifier(identifier: "stackoverflow.com", type: .URL), user: "userTest", recordIdentifier: nil)
               
store.saveCredentialIdentities([passwordIdentity]) { (success, error) in
                if success {
                    //great
                } else if let err = error {
                    //(.error(err))
                }
            }

错误:

  1. 源文件中的编辑器占位符(这显示在 saveCredentialIdentities 调用中的错误参数中。) 注意:我遇到的另一个错误是通过在凭据身份参数周围加上括号来解决的。

我知道,我需要在 SWIFT 上做得更好,我应该做很多阅读,但我只是想让这个自动填充提供程序发挥作用。任何帮助表示赞赏。

【问题讨论】:

  • 可能您没有将占位符文本identities 替换为您要保存的值,这将是一个包含您的身份[passwordIdentity]的数组
  • 啊,我之前保存了身份,忘记切换回来,因此“找不到”。之前有两个单独的错误。然而,括号解决了这个问题,所以谢谢。我仍然有“源文件中的编辑器占位符”错误。将编辑我的问题以更清楚地表明这一点。
  • 占位符文本只是指 Xcode 作为代码完成的一部分放入的文本;您需要用您的代码替换灰色占位符文本。
  • 我已经尝试在成功和错误正文中进行打印等。结果相同。该错误似乎出现在这一行的错误声明中: store.saveCredentialIdentities([passwordIdentity]) { (success, error)
  • 尝试删除并重新输入该行。有时 Xcode 会感到困惑 - 这表示编辑器提供了您尚未替换的占位符文本。

标签: ios swift syntax autofill


【解决方案1】:

与苹果的新功能一样,它没有被广泛记录。我不得不再次观看this video 以从中获得正确的细节,但它提供了大部分相关事实和警告。

最好先通过检查商店的状态来检查商店是否可用。我所做的是if state.isEnabled{ ... 但如果你想要正确的错误处理你应该做这样的事情 guard state.isEnabled else { throw Error}

提供记录标识符也很重要,否则您将永远无法正确地从自己的数据库中找到数据。试试 uuid 之类的东西。

这就是我的工作方式:

let store = ASCredentialIdentityStore.shared
store.getState { state in
    if state.isEnabled {
        let credential = ASPasswordCredentialIdentity(
            serviceIdentifier: ASCredentialServiceIdentifier(identifier: "www.stackoverflow.com/", type: .URL),
            user: "Username",
            recordIdentifier: "my_reference_to_the_password_data")

        store.saveCredentialIdentities([credential]) { bool, error in
            if let error = error {
                print(error)
            } else {
                print("Saved Credential!")
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2019-07-27
    • 2022-01-06
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多