这是我的代码:

static void SetA(byte[] b)
{
    var result = SecKeyChain.Add(new SecRecord(SecKind.Key) { Generic = "test", ValueData = NSData.FromArray(b) });
    Debug.WriteLine(result);
}
result是:

NoSuchAttribute
  • 是因为我正在调试,而且在发布时可以正常工作吗?
  • 是因为我需要在info.plist中添加一些内容吗?
  • 是因为我需要在配置中指定一些内容
    个人资料?
  • 还是因为我缺少代码中的某些步骤?
  • ...

  • 这是我第一次使用KeyChain,因此请不要打扰(如“忽略”)我可能犯的任何简单错误。

    最佳答案

    我有完全相同的错误。我从这里追踪官方样品
    https://github.com/xamarin/ios-samples/tree/master/Keychain

    我对其进行了调试,发现Error NoSuchAttribute来自Generic属性。在official Apple documentation中,kSecAttrGeneric属性列在“密码属性”下。所以我认为xamarin示例是正确的,因为它使用了SecKind.GenericPassword

    Generic或其他替换Label来标识您的钥匙串记录。

    使用您的代码

    static void SetA(byte[] b)
    {
        var result = SecKeyChain.Add(new SecRecord(SecKind.Key) {
            Label = "test",
            ValueData = NSData.FromArray(b)
        });
        Debug.WriteLine(result);
    }
    

    10-05 20:24