2010-12-14 4 views
2

Я пишу приложение, которое использует класс «KeychainItemWrapper» для безопасного хранения учетных данных. Вот код, который управляет брелок объекта:SIGABRT получен при использовании 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; 
} 

я получаю ошибку SIGABRT когда я пытаюсь писать учетные данные в связке ключей, здесь:

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

ответ

2

Видимо, ошибка была на NSAssert() блок. Комментируя, линия решила проблему.

+0

Что 'NSAssert()' block? Я не вижу одного в коде в вопросе. – liwp

+0

На самом деле я не помню, я должен вернуть весь проект и посмотреть на него, я сделаю это в понедельник. – IssamTP