gpt4 book ai didi

ios - 使用 secItemUpdate 更新 iOS 中的 kSecValueData 错误代码 -50

转载 作者:行者123 更新时间:2023-11-29 12:45:59 25 4
gpt4 key购买 nike

我在这里不知所措,我创建了一个钥匙串(keychain)查询,如果该项目尚不存在则添加该项目,然后我尝试使用测试字符串更新 kSecValueData 并返回错误代码 -50,这意味着出现错误使用我输入的一个或多个参数...

NSString *initial = @"";
NSData *initData = [initial dataUsingEncoding:NSUTF8StringEncoding];

//Create Search Dictionary For Phone Number...
NSDictionary *secPhoneItem = @{ (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
(__bridge id)kSecReturnData : (__bridge id)kCFBooleanTrue,
(__bridge id)kSecValueData : initData
};

//Check to see if keychain already exists by using secItemCopyMatching and associated status code
OSStatus PhoneCheckStatus = SecItemCopyMatching((__bridge CFDictionaryRef)secPhoneItem, NULL);

//Check Status Code Phone
if (PhoneCheckStatus == errSecItemNotFound) //If Phone Keychain Item Does Not already Exist
{
//Add Phone Number To Keychain
SecItemAdd((__bridge CFDictionaryRef)secPhoneItem, NULL);




}

//Update Phone Number to String
NSString *string = @"Test String";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *attributesForUpdate = @{
(__bridge id)kSecValueData : data
};


OSStatus news = SecItemUpdate((__bridge CFDictionaryRef)secPhoneItem, (__bridge CFDictionaryRef)attributesForUpdate);
NSLog(@"Update Status Code: %ld", news);

如果有人知道原因或可以透露一些信息,我现在从苹果文档中获得的唯一线索是您只能将真实属性传递给 secItemUpdate(),而不是“元”属性。

最佳答案

所以在重新阅读文档后,我发现 secItemUpdate()' 查询参数中不能使用键值对 (__bridge id)kSecReturnData : (__bridge id)kCFBooleanTrue .为了解决我的问题并帮助更好地优化搜索,我将键值对(__bridge id)kSecAttrDescription : someUniqueData` 添加到搜索查询以及类项规范中,然后使我的属性字典返回状态 0:SUCCESS !!!

关于ios - 使用 secItemUpdate 更新 iOS 中的 kSecValueData 错误代码 -50,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com