• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - KeychainItemWrapper 迁移数据抛出错误

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:54:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 ARCified KeychainItemWrapper并且无法将一个钥匙串(keychain)项目中的数据迁移到另一个项目。基本上我正在尝试将内容从应用程序特定项目复制到共享项目。为简洁起见,我只输入了用户名,因为它在那里失败了。

KeychainItemWrapper *legacyKeychainItem = [[KeychainItemWrapper alloc] initWithIdentifier"mainLogin" accessGroup"C35BXHSRSA.com.foo.bar"];
NSString *legacyUser = [legacyKeychainItem objectForKey__bridge id)kSecAttrAccount];

self.migratedKeychainItem = [[KeychainItemWrapper alloc] initWithIdentifier"security" accessGroup"C35BXHSRSA.com.foo.security"];
// dies here
[self.migratedKeychainItem setObject:legacyUser forKey__bridge id)kSecAttrAccount];

它死于 KeychainItemWrapper 方法 writeToKeychain throwing NSAssert( result == noErr, @"Couldn't update the Keychain Item.");

Keychain Services Reference 中查找错误告诉我

errSecDuplicateItem –25299 The item already exists.

我可以通过硬编码/更改字符串来确认这个问题,并且代码运行良好,但我正在尝试迁移数据......所以相同很重要。问题是,为什么当它是 2 个不同的钥匙串(keychain)项时会引发错误,我到底如何让它按需要工作?



Best Answer-推荐答案


您已经有一个带有"new"用户名和相同其他主键(帐户、服务等)的钥匙串(keychain)项,但它不是您要更新的项。因此更新后的项目与旧项目发生冲突,您得到 –25299。

您可以使用 SecItemCopyMatching 添加一些调试代码(请求数组结果)并查看。

如果您确定不想要旧项目,请将其删除。如果你这样做了,那么你需要一个新的命名方案。

关于ios - KeychainItemWrapper 迁移数据抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15639597/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap