2010-12-14 6 views
2

J'écris une application qui utilise la classe "KeychainItemWrapper" pour stocker de manière sécurisée les informations de connexion. Voici le code qui gère l'objet Trousseau:SIGABRT reçu lors de l'utilisation KeychainItemWrapper iPhone SDK

- (IBAction)saveFields { 
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"username" accessGroup:nil]; 
[wrapper setObject:[self.password text] forKey:(id)kSecAttrAccount]; 
[wrapper release]; 
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"password" accessGroup:nil]; 
[wrapper setObject:[self.password text] forKey:(id)kSecAttrAccount]; 
[wrapper release]; 

[self dismissModalViewControllerAnimated:YES]; 
} 

- (BOOL)isUserLogged { 
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"username" accessGroup:nil]; 
if ([[wrapper objectForKey:(id)kSecAttrAccount] isEqualToString:@""]) { 
    return NO; 
} else { 
    username = [NSString stringWithString:[wrapper objectForKey:(id)kSecAttrAccount]]; 
    [wrapper release]; 
} 
wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"password" accessGroup:nil]; 
if ([[wrapper objectForKey:(id)kSecAttrAccount] isEqualToString:@""]) { 
    return NO; 
} else { 
    password = [NSString stringWithString:[wrapper objectForKey:(id)kSecValueData]]; 
    [wrapper release]; 
} 

return YES; 
} 

Je reçois l'erreur SIGABRT lorsque je tente d'écrire des informations d'identification dans le trousseau, ici:

// KeychainItemWrapper.m 
// - (void)writeToKeychain; 
result = SecItemAdd((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL); 

Répondre

2

Apparemment, la faute était sur le NSAssert() bloc. Commentant la ligne a résolu le problème.

+0

Qu'est-ce que 'NSAssert()' bloquer? Je ne peux pas en voir un dans le code de la question. – liwp

+0

En fait, je ne m'en souviens pas, je devrais récupérer tout le projet et le regarder, je le ferai lundi. – IssamTP

Questions connexes