菜鸟教程小白 发表于 2022-12-12 09:54:23

ios - KeychainItemWrapper 迁移数据抛出错误


                                            <p><p>我正在使用 ARCified <a href="https://gist.github.com/dhoerl/1170641" rel="noreferrer noopener nofollow"><code>KeychainItemWrapper</code></a>并且无法将一个钥匙串(keychain)项目中的数据迁移到另一个项目。基本上我正在尝试将内容从应用程序特定项目复制到共享项目。为简洁起见,我只输入了用户名,因为它在那里失败了。</p>

<pre><code>KeychainItemWrapper *legacyKeychainItem = [ initWithIdentifier:@&#34;mainLogin&#34; accessGroup:@&#34;C35BXHSRSA.com.foo.bar&#34;];
NSString *legacyUser = ;

self.migratedKeychainItem = [ initWithIdentifier:@&#34;security&#34; accessGroup:@&#34;C35BXHSRSA.com.foo.security&#34;];
// dies here
;
</code></pre>

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

<p>在 <a href="https://developer.apple.com/library/mac/#documentation/security/Reference/keychainservices/Reference/reference.html" rel="noreferrer noopener nofollow">Keychain Services Reference</a> 中查找错误告诉我</p>

<blockquote>
<p>errSecDuplicateItem   –25299The item already exists.</p>
</blockquote>

<p>我可以通过硬编码/更改字符串来确认这个问题,并且代码运行良好,但我正在尝试迁移数据......所以相同很重要。问题是,为什么当它是 2 个不同的钥匙串(keychain)项时会引发错误,我到底如何让它按需要工作?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您已经有一个带有"new"用户名和相同其他主键(帐户、服务等)的钥匙串(keychain)项,但它不是您要更新的项。因此更新后的项目与旧项目发生冲突,您得到 –25299。</p>

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

<p>如果您确定不想要旧项目,请将其删除。如果你这样做了,那么你需要一个新的命名方案。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - KeychainItemWrapper 迁移数据抛出错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15639597/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15639597/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - KeychainItemWrapper 迁移数据抛出错误