检查是否有可用的登录项目是钥匙串

时间:2015-07-09 11:10:32

标签: ios objective-c keychainitemwrapper

我想检查是否存在关键项,如果是,那么我的应用程序应该跳过登录视图控制器并显示主视图控制器。 但是我一直在试着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中保存任何内容。

1 个答案:

答案 0 :(得分:-1)

根据Ariyayi的说法。 当您从应用程序注销时,您必须清理钥匙串。 使用:

- (void)resetKeychainItem;

您可以进行测试。