Mus*_*sis 5 keychain ios sskeychain
我正在使用此方法来检索保存的值(并SecItemAdd用于最初添加它):
+ (NSData *)passwordDataForService:(NSString *)service
account:(NSString *)account error:(NSError **)error {
CFTypeRef result = NULL;
NSMutableDictionary *query = [self _queryForService:service account:account];
[query setObject:(__bridge id)kCFBooleanTrue
forKey:(__bridge id)kSecReturnData];
[query setObject:(__bridge id)kSecMatchLimitOne
forKey:(__bridge id)kSecMatchLimit];
status = SecItemCopyMatching((__bridge CFDictionaryRef)query, &result);
if (status != noErr && error != NULL) {
*error = [NSError errorWithDomain:kSSKeychainErrorDomain code:status
userInfo:nil];
return nil;
}
return (__bridge_transfer NSData *)result;
}
Run Code Online (Sandbox Code Playgroud)
这段代码对大多数用户来说运行良好,但我的一小部分用户 (< 1%) 遇到的结果表明这里的读取或写入失败。不幸的是,我的代码吞下了任何错误(即,当它们发生时不会将它们记录在任何地方),所以我不知道为什么它在世界上失败了,而且我根本无法在我的任何开发设备上重现该问题。
有谁知道可以在 iOS 设备上启用的任何可能导致SecItemAdd或SecItemCopyMatching失败的安全/权限设置?我试过打开密码锁定,但这似乎没有效果。
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |