我必须将 NSArray(包含 NSString 和 BOOL)存储到 KeychainItemWrapper 中,以便在另一个 ViewController 中重新使用它,并且即使应用程序关闭也将其保存在内存中。
我已经看到了这个问题,但这对我没有帮助,因为我找不到 SBJsonWriter 文件。
任何人都可以帮助我吗?
十分感谢。
祝你有美好的一天 !
我必须将 NSArray(包含 NSString 和 BOOL)存储到 KeychainItemWrapper 中,以便在另一个 ViewController 中重新使用它,并且即使应用程序关闭也将其保存在内存中。
我已经看到了这个问题,但这对我没有帮助,因为我找不到 SBJsonWriter 文件。
任何人都可以帮助我吗?
十分感谢。
祝你有美好的一天 !
SBJsonWriter 是多年前流行的第 3 方 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
您可以使用 Apple 的 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];