首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将NSArray存储到KeychainItemWrapper中

将NSArray存储到KeychainItemWrapper中
EN

Stack Overflow用户
提问于 2014-07-02 12:53:41
回答 2查看 1.4K关注 0票数 1

我必须将一个NSArray (包含NSString和BOOL)存储到一个KeychainItemWrapper中,以便在另一个ViewController中重用它,并且即使应用程序关闭,也要将它保存在内存中。

我已经在this question上看到了,但是它对我没有帮助,因为我找不到SBJsonWriter文件。

有人能帮我吗?

非常感谢。

祝你今天愉快!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-02 13:15:39

SBJsonWriter是一个流行多年的第三方JSON库,现在iOS已经内置了这个库。

使用本机NSJSONSerialization将数据序列化为JSON,然后将其写入密钥链(假设kSecValueData是加密的):

代码语言:javascript
运行
复制
NSArray* array = ...;

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:array options:0 error:nil];
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

[keychainItem setObject:jsonString forKey:(__bridge id)kSecValueData];

若要将数据读取回NSArray:

代码语言:javascript
运行
复制
NSString* jsonString = [keychainItem objectForKey:(__bridge id)kSecValueData];
NSArray* array = nil;

if(jsonString.length > 0)
{
    id jsonObject = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];

    //  Type check because the JSON serializer can return an array or dictionary
    if([jsonObject isKindOfClass:[NSArray class]])
        array = jsonObject;
}

//  use your array variable here, it may be nil
票数 1
EN

Stack Overflow用户

发布于 2014-07-02 13:14:43

你可以使用苹果的NSJSONSerialization类来做你的链接答案用SBJsonWriter做的事情。

示例:

代码语言:javascript
运行
复制
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:myArray options:0 error:&error];
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

然后将jsonString写入您的密钥链。

若要逆转此过程,请从您的密钥链中检索jsonString并执行以下操作:

代码语言:javascript
运行
复制
NSArray* myArray = [NSJSONSerialization JSONObjectWithData:jsonString options:0 error:&error];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24531611

复制
相关文章

相似问题

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