指定访问组时KeychainItemWrapper错误

很长一段时间,我一直使用KeychainItemWrapper的ARC版本成功地读写私人钥匙串项目。

我现在正在将我的iOS应用程序转换为使用共享访问组,以便我的2个共享相同应用程序前缀的应用程序可以访问这些钥匙串项目。 在function部分,我添加了钥匙串组“MYAPPPREFIX.MYSHAREDACCESSNAME”

我正在使用这些行来将我的variables写入钥匙串组:

keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:@"MYAPPPREFIX.MYSHAREDACCESSNAME"]; [keychainItemWrapper setObject:value forKey:(__bridge id)(kSecAttrAccount)]; // store the new value in the keychain 

如果accessGroup被指定为零 ,那么效果很好。 但是,如果我指定访问组,在debugging器日志中遇到以下错误:

在 – [KeychainItemWrapper writeToKeychain],…. / KeychainItemWrapper.m:329终止应用程序,由于未捕获的exception'NSInternalInconsistencyException',原因:'无法添加钥匙串项目。

由此产生的OSStatus错误代码是-25243,我无法追踪更多的信息。

有什么我可能需要做的,以写入共享访问组?

如果它帮助别人,我能够确定这个问题。 在Xcode的“能力”,我需要省略应用程序ID前缀。 但是,识别访问组时需要包含应用ID标识前缀。

所以,在function上,我将一个组命名为“myAccessGroup”。

在我的代码中,我包含了这样的前缀:

 keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:@"xxxxxxxx.myAccessGroup"];