2010-12-14 2 views
2

안전한 방법으로 로그인 자격 증명을 저장하기 위해 "KeychainItemWrapper"클래스를 사용하는 응용 프로그램을 작성하고 있습니다. 나는 키 체인에 자격 증명을 작성하려고 할 때KeychainItemWrapper iPhone SDK를 사용하는 동안 SIGABRT가 수신되었습니다.

- (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() 블록입니까? 나는이 질문에서 하나의 코드를 볼 수 없다. – liwp

+0

사실 저는 기억이 안납니다. 전체 프로젝트를 다시 받아서보아야합니다. 저는 월요일에 할 것입니다. – IssamTP