我必须将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];