2013-03-06 11 views
9

Anahtar zincirinde bazı bilgiler depoladım ve tüm öğeler için [keychain removeObjectForKey:theKey] yerine tüm öğeleri kaldırmam gerektiğine dair bir durum var, Ben:Bir iOS uygulaması için tüm anahtarlık verilerini kaldırmanın (temizlemenin) doğru yolu

NSDictionary *spec = [NSDictionary dictionaryWithObjectsAndKeys:(id)kSecClassGenericPassword, kSecClass, 
         [self serviceName], kSecAttrService, nil]; 

return !SecItemDelete((CFDictionaryRef)spec); 

bunun yerine?

Denedim ve işe yaradı, doğru şeyi yapıp yapmadığımdan emin değilim? Uygulamamda

cevap

5

benim anahtarlık temizlemek için bu hattı kullanıyorum: İsterseniz

[[[KeychainItemWrapper alloc] initWithIdentifier:@"my_key" accessGroup:nil] resetKeychainItem] 
+0

değerleri? Bu kSecAttrService mi? – hzxu

+0

Uygulamanızda birden fazla KeychainItem işlenmesi gerekmesi durumunda istediğiniz herhangi bir tanımlayıcıyı seçebilirsiniz. – Kirualex

0

Ben doğru ne yaptığınızı inanıyoruz, aslında, Sorgunuzu kSecAttrService parametresini önleyebilirsiniz. Öte yandan, SecItemDelete, işlem hakkında daha ayrıntılı bilgi için kontrol edebileceğiniz bir OSStatus değeri döndürür. olası statü için

NSDictionary *spec = [NSDictionary dictionaryWithObjectsAndKeys:(id)kSecClassGenericPassword, kSecClass, nil]; 

    OSStatus status = SecItemDelete((CFDictionaryRef)spec); 
    if (status == errSecSuccess) 
     return YES; 

    return NO; 

Here are the codes ve anlamlar tanımlayıcı nedir

İlgili konular