2013-06-30 14 views
7

Sto provando a scrivere sul portachiavi in ​​iOS e ogni volta che provo a scrivere sul portachiavi durante il test sul mio dispositivo, ottengo il codice di errore 50 come risultato di SecItemAdd.SecItemAdd restituire il codice OSStatus -50

Prima ho provato a implementare un tale meccanismo da solo, e dopo aver ricevuto l'errore molte volte, ho provato KeychainItemWrapper, pensando che stavo facendo qualcosa di sbagliato. Ma usando KeychainItemWrapper mi dà anche lo stesso codice di errore: (versione ARCified di KeychainItemWrapper, https://gist.github.com/dhoerl/1170641)

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

risultato è -50, lo stesso risultato che sto ottenendo quando stavo provando io stesso. Ecco come sto usando l'involucro (con gruppo di accesso essendo la mia app id)

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

ho pensato che forse prima impostazione di una matrice mutevole sarebbe un problema, ma cercando una stringa anche fallito nello stesso modo . Quale potrebbe essere la causa del problema?

Grazie, Can.

risposta

3

Non è possibile utilizzare le chiavi arbitrarie per [keychain setObject: forKey:]. Quanto segue funziona:

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

Il Apple documentation è pieno di informazioni su questo.

Problemi correlati