那么,
我的应用程序有一个tabBar,其中一个按钮是“配置”。在这个视图中,我只有一个“忘记”按钮,负责“删除”用户的钥匙串。用户可以将钥匙串保存在AppDelagate中调用的应用程序的第一个视图(ModalView)上。所以,我怀疑的是如何在另一个类中删除这个钥匙串?我在AppDelagate中创建了ConfigurationViewController并启动了钥匙串,但它无法正常工作。
的AppDelegate:
ConfigurationViewController *_cvc = [[[ConfigurationViewController alloc] initWithNibName:@"ConfigurationViewController" bundle:[NSBundle mainBundle]] autorelease];
self.cvc = _cvc;
cvc.keychain = self.keychain;
[cvc release];
ConfigurationViewController.h:
#import <UIKit/UIKit.h>
#import "InformationViewController.h"
#import "KeychainItemWrapper.h"
@interface ConfigurationViewController : UIViewController {
KeychainItemWrapper *keychain;
}
@property (nonatomic, retain) KeychainItemWrapper *keychain;
@end
ConfigurationViewController.m:
- (IBAction)forget:(id)sender
{
// Erase all information saved in KeyChain
[ keychain resetKeychainItem ];
// Pass the selected object to the new view controller.
[ self.tabBarController setSelectedIndex:0 ];
}
我不知道是否只需重置钥匙串......
编辑1:
在 AppDelegate.m 上,我验证是否有关于keyChain的信息。
if ( hasInformation ) {
...
} else {
// open a presentModalViewController with a form to fill with login information
[ rootTabBarController presentModalViewController:lvc animated:NO ];
}
在 LoginViewController.m :
上if ( allFormIsOkay ) {
// store username
if ( [login text] )
[ keychain setObject:[login text] forKey:(id)kSecAttrAccount ];
// Store password
if ( [password text] )
[ keychain setObject:[password text] forKey:(id)kSecValueData ];
} else {
[ keychain resetKeychainItem ];
}
[ self dismissModalViewControllerAnimated:YES ];
我正在尝试“擦除” ConfigurationViewController 上的钥匙串(我已经展示过)。