You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询带相同标签的钥匙串项时遭遇errSecParam错误求助

解决钥匙串查询errSecParam(-50)错误

你的查询字典缺少返回结果类型参数,这是导致errSecParam(-50)参数无效错误的核心原因。SecItemCopyMatching要求必须明确指定要返回钥匙串项的哪些数据,否则系统无法执行查询。

错误分析

不管设置kSecMatchLimit为kSecMatchLimitAll还是kSecMatchLimitOne,查询字典都必须包含至少一个返回类型参数:

  • kSecReturnAttributes:返回钥匙串项的属性字典
  • kSecReturnData:返回钥匙串项的加密数据(比如密码内容)
  • kSecReturnRef:返回钥匙串项的引用对象

修改后的查询代码

如果需要获取匹配项的属性信息,修改查询字典如下:

var request: [CFString: Any] = [
    kSecClass: kSecClassGenericPassword,
    kSecMatchLimit: kSecMatchLimitAll,
    kSecAttrLabel: "some common label here",
    kSecReturnAttributes: kCFBooleanTrue // 新增:指定返回属性
]

如果同时需要获取密码数据,再添加kSecReturnData: kCFBooleanTrue:

var request: [CFString: Any] = [
    kSecClass: kSecClassGenericPassword,
    kSecMatchLimit: kSecMatchLimitAll,
    kSecAttrLabel: "some common label here",
    kSecReturnAttributes: kCFBooleanTrue,
    kSecReturnData: kCFBooleanTrue
]

结果处理

  • 当kSecMatchLimit为kSecMatchLimitAll时,成功查询后item会是CFArray类型,可转换为[[String: Any]]遍历处理每个匹配项
  • 当kSecMatchLimit为kSecMatchLimitOne时,item会是[String: Any]类型的单个属性字典(如果包含kSecReturnData则会带有kSecValueData字段)

内容的提问来源于stack exchange,提问作者Ikhs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:06:28