最近项目里增加了一个需求,我们需要用到keychain,但是在模拟器上生成SecKeyRef对象时
CFTypeRef persistKey = nil;
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)"you key", &persistKey);
if (persistKey != nil){
CFRelease(persistKey);
}
if ((status != noErr) && (status != errSecDuplicateItem)) {
return nil;
}
这里的status报错了,debug发现 报错是-34018errSecMissingEntitlement的错误,google了一下,这是缺少entitlement的错误,需要在添加相应的权限。具体方法是
project-> signing & capabilites -> 左上角的+号,搜索keychain sharing,添加相应的权限
如果还不能解决问题请查看这个链接的其他方案










网友评论