将NSArray存储到KeychainItemWrapper中



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

我已经看到了这个问题,但它不会帮助我,因为我找不到SBJsonWriter文件。

有谁能帮我一下吗?

谢谢你。

祝您愉快!

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

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

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:

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

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

的例子:

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

然后写jsonString到你的keychain。

要反转这个过程,从keychain中检索jsonString并执行以下操作:

NSArray* myArray = [NSJSONSerialization JSONObjectWithData:jsonString options:0 error:&error];

相关内容

  • 没有找到相关文章

最新更新