我是关键链的新手,并试图将我的应用内容与其分开。
使用此代码设置I' m的类型
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"TestUDID" accessGroup:nil];
[keychain setObject:@"free" forKey:(__bridge id)kSecAttrAccount];
得到这样的
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"TestUDID" accessGroup:nil];
NSLog(@"%@",[keychain objectForKey:(__bridge id)kSecAttrAccount]);
因此,每次我需要检查应用程序版本时,我应该创建一个keychain包装器对象并获取key的对象。我该如何简化它?
我正在考虑创建全局bool变量。还有更好的方法吗?
答案 0 :(得分:0)
您示例中的全局变量是有害的。你的应用程序变得混乱(特别是在多线程中)。仅对常量使用全局变量。
使用静态方法创建一个类(如果需要商店属性,则创建单例),例如AppInfo
,您将在其中放置有关应用程序的信息。
// AppInfo.h
@interface AppInfo : NSObject
// (class) available in Xcode 8
@property (class) id appVersion;
@end
// AppInfo.m
@implementation AppInfo
+ (KeychainItemWrapper *)keychain {
return [[KeychainItemWrapper alloc] initWithIdentifier:@"TestUDID" accessGroup:nil];
}
+ (NSString *)appVersion {
return [self.keychain objectForKey:(__bridge id)kSecAttrAccount];
}
+ (void)setAppVersion:(NSString *)appVersion {
[self.keychain setObject:appVersion forKey:(__bridge id)kSecAttrAccount];
}
@end