我必须将一个NSArray (包含NSString和BOOL)存储到一个KeychainItemWrapper中,以便在另一个ViewController中重用它,并且即使应用程序关闭,也要将它保存在内存中。
我已经在this question上看到了,但是它对我没有帮助,因为我找不到SBJsonWriter文件。
有人能帮我吗?
非常感谢。
祝你今天愉快!
发布于 2014-07-02 13:15:39
SBJsonWriter是一个流行多年的第三方JSON库,现在iOS已经内置了这个库。
使用本机NSJSONSerialization将数据序列化为JSON,然后将其写入密钥链(假设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发布于 2014-07-02 13:14:43
你可以使用苹果的NSJSONSerialization类来做你的链接答案用SBJsonWriter做的事情。
示例:
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:myArray options:0 error:&error];
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];然后将jsonString写入您的密钥链。
若要逆转此过程,请从您的密钥链中检索jsonString并执行以下操作:
NSArray* myArray = [NSJSONSerialization JSONObjectWithData:jsonString options:0 error:&error];https://stackoverflow.com/questions/24531611
复制相似问题