gpt4 book ai didi

ios - KeychainItemWrapper 迁移数据抛出错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:07 26 4
gpt4 key购买 nike

我正在使用 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 抛出 NSAssert( result == noErr, @"Couldn't update the Keychain Item.");

Keychain Services Reference 中查找错误告诉我

errSecDuplicateItem –25299 The item already exists.

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

最佳答案

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

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com