2014-01-17 46 views
4

我想這Using the Keychain to store passwords on iOSstorybored存儲用戶電子郵件和登錄密碼如何解決鑰匙扣錯誤:C指針類型的隱式轉換「CFTypeRef」

在我的M檔:

.... 
.... 
#import "KeychainItemWrapper.m" 
.... 
.... 
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest" accessGroup:nil]; 
     [keychain setObject:kSecAttrAccessibleWhenUnlocked forKey:kSecAttrAccessible]; 

     NSLog(@"%@, %@", [keychain objectForKey:kSecAttrAccount], [keychain objectForKey:kSecValueData]); 

     [keychain setObject:@"[email protected]" forKey:kSecAttrAccount]; 
     [keychain setObject:@"MySuperSecretPassword" forKey:kSecValueData]; 

     NSLog(@"%@, %@", [keychain objectForKey:kSecAttrAccount], [keychain objectForKey:kSecValueData]); 

,但我收到以下錯誤:

Implicit conversion of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast 

enter image description here

回答

6

我已經在你的其他職位回答了這個。因爲你可能使用 「ARC」

出現這種情況: Is there an Android sharedpreferences equivalent in iOS to save credentials (Username and Password)?

我會在這裏重新發布它。你是?如果是這樣,您可以設置一個標誌來忽略該特定文件的ARC。選擇您的項目,選擇您的目標,選擇Build Phases並展開下拉菜單中的「Compile Sources」。尋找KeychainItemWrapper(或任何您稱之爲鑰匙串文件)並設置此標誌。 -fno-objc-arc

+1

現在,我在kSecAttrAccessible,kSecValueData,kSecAttrAccount,kSecValueData和kSecValueData上發生此錯誤。我不明白這個錯誤是什麼 – Waqleh

+1

我會推薦一款已經針對ARC進行了優化的Keychain Wrapper。像這樣的東西應該對你有好處。 http://www.thomasverbeek.com/blog/?p=351。 –

+0

讓我知道這是否解決您的問題.. –