-25299 reason: 'Couldn't add the Keychain Item.'


今天在用蘋果官方demo 提供的KeychainItemWrapper類時遇到-25299  reason: 'Couldn't add the Keychain Item.'錯誤,再4s上可以正常運行,但6上卻崩潰

崩潰位置

 result = SecItemAdd((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);

NSAssert( result == noErr, @"Couldn't add the Keychain Item." );

我調用的方法

 

  CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);

        strUUID = (NSString *)CFBridgingRelease(CFUUIDCreateString (kCFAllocatorDefault,uuidRef));

        [keychainItem setObject:strUUID forKey:(__bridge id)kSecValueData];

 

通過看國外的文章知道了方法(http://stackoverflow.com/questions/4309110/error-saving-in-the-keychain-with-iphone-sdk

修改方法: 加上下面這行代碼就能正常運行

[keychainItem setObject:@"MY_APP_CREDENTIALS" forKey:(id)kSecAttrService];

最后修改成代碼為:

 

        [keychainItem setObject:@"MY_APP_CREDENTIALS" forKey:(id)kSecAttrService];

 

            CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);

 

        strUUID = (NSString *)CFBridgingRelease(CFUUIDCreateString (kCFAllocatorDefault,uuidRef));

 

        [keychainItem setObject:strUUID forKey:(__bridge id)kSecValueData];

 

原因:

  KeyChain內部以kSecAttrAccount 與kSecAttrService作為唯一鑰匙串標識,兩個都必須設置才行;

 

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM