我想检查是否存在关键项,如果是,那么我的应用程序应该跳过登录视图控制器并显示主视图控制器。 但是我一直在试着if语句,即使我第一次运行应用程序,我还没有在登录视图控制器中存储密钥链项。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//******* set the start page to login viewController to recipestablesviewController *******
keychain=[[KeychainItemWrapper alloc]initWithIdentifier:@" MyuniqueIdentifeirkeychain" accessGroup:nil];
bool isLoggedIn= ([[keychain objectForKey:(__bridge id)kSecValueData]) ? true:false;
NSString *storyboardId = isLoggedIn ? @"MainIdentifier" : @"LoginIdentifier";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:storyboardId];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = initViewController;
[self.window makeKeyAndVisible];
return YES;
}
这是我在viewController中登录的代码,用于保存我的钥匙串项目:
NSString *authentication_token=[token valueForKey:@"auth_token"];
keychain=[[KeychainItemWrapper alloc]initWithIdentifier:@"Hyper_recipes" accessGroup:nil];
[keychain setObject:authentication_token forKey:(__bridge id)(kSecValueData)];
有人知道原因吗? 当我调试时,kSecValueData中有一些东西。虽然我没有在appdelegate中保存任何内容。
答案 0 :(得分:-1)
根据Ariyayi的说法。 当您从应用程序注销时,您必须清理钥匙串。 使用:
- (void)resetKeychainItem;
您可以进行测试。