2013-06-30 50 views
7

我正試圖寫入iOS中的鑰匙串,並且每當我嘗試在我的設備上進行測試時寫入鑰匙串時,由於SecItemAdd的結果我得到-50錯誤代碼。SecItemAdd返回OSStatus代碼-50

我第一次試圖自己實現這樣一個機制,並且在得到錯誤很多次之後,我嘗試了KeychainItemWrapper,認爲我做錯了什麼。但是,使用KeychainItemWrapper也給了我同樣的錯誤代碼: (KeychainItemWrapper的ARCified版本,https://gist.github.com/dhoerl/1170641

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

結果爲-50,那個時候我是想我自己我已經得到了同樣的結果。下面是我如何使用包裝(訪問組是我的應用程序ID)

keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"data" accessGroup:@"my.app.identifier"]; 
purchasedPacks = [keychain objectForKey:@"packs"]; 
if(purchasedPacks == nil){ 
    [keychain setObject:[[NSMutableArray alloc] init] forKey:@"packs"]; 
} 

我首先想到的,也許設置可變數組將是一個問題,而是試圖字符串也沒有以同樣的方式。什麼可能是問題的原因?

謝謝, 可以。

回答

3

您不能使用[keychain setObject: forKey:]的任意鍵。以下將工作:

[keychain setObject:[[NSMutableArray alloc] init] 
      forKey:(__bridge id)kSecValueData] 

Apple documentation是充分的有關這方面的信息。