首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >KeychainItemWrapper迁移数据引发错误

KeychainItemWrapper迁移数据引发错误
EN

Stack Overflow用户
提问于 2013-03-26 14:28:42
回答 1查看 685关注 0票数 2

我正在使用ARCified KeychainItemWrapper,并且在将一个密钥链项中的数据迁移到另一个项时遇到了问题。基本上,我试图将内容从应用程序特定项复制到共享项。为了简洁起见,我只输入用户名,因为它在那里失败了。

代码语言:javascript
运行
复制
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抛出NSAssert( result == noErr, @"Couldn't update the Keychain Item." );

查找密钥链服务参考中的错误告诉我

errSecDuplicateItem -25299项目已经存在.

我可以通过硬编码/修改字符串来确认这个问题,并且代码可以很好地工作,但是我正在尝试迁移数据.所以相同是很重要的。问题是,当它是两个不同的键链项时,为什么会抛出一个错误?我是如何让它按需要工作的呢?

EN

回答 1

Stack Overflow用户

发布于 2013-04-24 14:49:05

您已经有了一个具有“新”用户名和相同的其他主键(帐户、服务等)的密钥链项,并且它不是您正在更新的。因此,更新的项与旧项发生冲突,您将得到-25299。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15639597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档