我有一个用Swift 2.3编写的应用程序。该应用程序使用KeychainItemWrapper,使访问Keychain更简单。
当我使用Xcode在iOS 9.3模拟器中运行应用程序时,应用程序按预期运行,并且读取/写入钥匙串没有问题。
同样精确的应用程序,在我的代码中没有任何更改的情况下,在调用时崩溃:
- (void)resetKeychainItem
使用以下行:
SecItemDelete((__bridge CFDictionaryRef)tempDictionary);
因此,使这个NSAssert给我错误:
NSAssert( junk == noErr || junk == errSecItemNotFound, @"Problem deleting current dictionary." );
通过代码34018研究此错误向我指出其他帖子,其中用户遇到了钥匙串的错误,实际上引起了Apple的开发人员的注意。这是一个高优先级的错误,一篇帖子建议iOS 9.3修复此问题(我的应用程序适用于iOS 9.3!)。
然而,据我所知,Xcode 8处理代码签名等问题的方式与以前的版本不同。所以我想知道如果这是一个可能的新bug,请使用iOS 10。
如果有人对iOS 10 / Xcode 8上的此错误有任何想法或经验,请分享您的建议。