keychain - 在 Swift 中,ios secItemAdd保持返回 50错误

  显示原文与译文双语对照的内容
87 1

尝试在安全链中添加项目时,继续获得 -50.

 var query = [String:AnyObject]()
 query[kSecClass as String] = kSecClassGenericPassword
 query[kSecAttrAccount as String] ="a"
 query[kSecValueData as String] ="b"
 let result = SecItemAdd(query as CFDictionary, nil);

结果是 -50.无法找出原因,需要帮助。先谢谢了。

时间:原作者:0个回答

115 5

我认为 kSecValueData 键的值需要是 NSData,而不是字符串或者 NSString 。尝试将字符串编码为数据( 使用 比如 UTF-8 编码) 。未测试的Fragment:

query[kSecValueData as String] ="b".dataUsingEncoding(NSUTF8StringEncoding)

对于将来的引用,错误代码 -50对应于 errSecParam,SecBase.h 头文件的含义为:"一个或者多个参数传递给函数无效。"如果再次看到这里错误,请尝试更改传入的值。

原作者:
...