gpt4 book ai didi

ios - 如何从钥匙串(keychain)中删除 nsdictionary 以进行替换

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:28 24 4
gpt4 key购买 nike

我正在存储一个序列化的 nsdictionary 并将其加载到钥匙串(keychain)中,如本文(Store NSDictionary in keychain)中所述,但我需要能够更新/编辑字典内容,所以我想删除它并重新添加。

我只是不知道该怎么做。我从上面的帖子中获取了以下代码:

    KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"arbitraryId" accessGroup:nil]
NSString *error;
//The following NSData object may be stored in the Keychain
NSData *dictionaryRep = [NSPropertyListSerialization dataFromPropertyList:dictionary format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
[keychain setObject:dictionaryRep forKey:kSecAttrService];

//When the NSData object object is retrieved from the Keychain, you convert it back to NSDictionary type
dictionaryRep = [keychain objectForKey:kSecAttrServce];
NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData:dictionaryRep mutabilityOption:NSPropertyListImmutable format:nil errorDescription:&error];

SecItemDelete((CFDictionaryRef)dictionaryRep); // doesnt work

值未从钥匙串(keychain)中删除。

谢谢

最佳答案

这是一个奇怪的存储数据的地方。你把它放在 kSecAttrService ,未加密。我想你的意思是把它放在 kSecValueData 中(这是唯一加密的钥匙串(keychain)项)。

也就是说,没有必要删除该项目。你可以只使用 [keychain setObject:forKey:]随时更新值。 KeychainItemWrapper自动检测项目是否已经存在,如果存在则更新它。

如果要使用 KeychainItemWrapper 删除项目, 使用 -resetKeychainItem .这称为 SecItemDelete()具有正确的值。您通常不能混合搭配使用 KeychainItemWrapper和对 SecItem* 的原始调用没有很好地理解 Keychain API 以及究竟如何KeychainItemWrapper有效。

关于ios - 如何从钥匙串(keychain)中删除 nsdictionary 以进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16174753/

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