首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从SecItemCopyMatching检索数据

无法从SecItemCopyMatching检索数据
EN

Stack Overflow用户
提问于 2014-04-12 07:47:09
回答 1查看 1.5K关注 0票数 1

我正在向密钥链中添加一个项,然后我希望得到该项的值。问题是,结果是一个空字符串。我做错了什么?谢谢!

代码语言:javascript
运行
复制
//add item to keychain
NSDictionary *secItem = @{ (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
                           (__bridge id)kSecAttrService : [[NSBundle mainBundle] bundleIdentifier],
                           (__bridge id)kSecAttrAccount : myKeyVar,
                           (__bridge id)kSecValueData : [myValue dataUsingEncoding:NSUTF8StringEncoding],
                           (__bridge id)kSecAttrSynchronizable : @YES };

OSStatus status = SecItemAdd((__bridge CFDictionaryRef)secItem, NULL);
//successfully adds it

代码语言:javascript
运行
复制
//query for existing item
NSDictionary *query = @{(__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword,
                        (__bridge id)kSecAttrService : [[NSBundle mainBundle] bundleIdentifier],
                        (__bridge id)kSecAttrAccount : keyToSearchForVar,
                        (__bridge id)kSecAttrSynchronizable : @YES,
                        (__bridge id)kSecReturnAttributes : (__bridge id)kCFBooleanTrue};

CFDictionaryRef valueAttributes = NULL;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query,
                                      (CFTypeRef *)&valueAttributes);
NSDictionary *attributes = (__bridge_transfer NSDictionary *)valueAttributes;
//attributes has 8 key/value pairs but I don't see the stored encoded value as one of them

if (status == errSecSuccess) {
    NSString* myString = [[NSString alloc] initWithData:[attributes objectForKey:(__bridge id)kSecValueData] encoding:NSUTF8StringEncoding];
    //myString is @""
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-18 05:07:08

问题是,我定义了kSecReturnAttributes来要求它返回属性,但是没有定义kSecReturnData来返回实际的数据,这是很重要的。在查询中添加这一行解决了以下问题:

代码语言:javascript
运行
复制
(__bridge id)kSecReturnData : (__bridge id)kCFBooleanTrue}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23027727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档