Parfois, quand je lance une application sur le périphérique à partir de Xcode, je voudrais essayer de le trousseau d'accès, mais ne parviennent pas en raison de l'erreur -34018. Cela ne correspond à aucune des documentée trousseau codes d'erreur et ne peut pas être reproduits. (se trouve peut-être 30% du temps, et il n'est pas clair pour moi pourquoi il arrive). Ce qui rend le débogage ce problème très difficile, c'est l'absence totale de documentation. Toute idée de ce qui cause de ce problème et comment le résoudre? Je suis en utilisant Xcode 5 et iOS 7.0.4 sur l'appareil.
Il y a un sujet ouvert à ce sujet ici: https://github.com/soffes/sskeychain/issues/52
EDIT: Ajout de keychain de code d'accès, conformément à la demande
Je suis à l'aide de l' SSKeychain
librairie d'interfaçage avec un trousseau de clés. Voici l'extrait de code.
#define SERVICE @"default"
@implementation SSKeychain (EXT)
+ (void)setValue:(NSString *)value forKey:(NSString *)key {
NSError *error = nil;
BOOL success = NO;
if (value) {
success = [self setPassword:value forService:SERVICE account:key error:&error];
} else {
success = [self deletePasswordForService:SERVICE account:key error:&error];
}
NSAssert(success, @"Unable to set keychain value %@ for key %@ error %@", value, key, error);
if (!success) {
LogError(@"Unable to set value to keychain %@", error);
}
LogTrace(@"Will set keychain account %@. is to nil? %d", key, value == nil);
if (value == nil)
LogWarn(@"Setting keychain %@ to nil!!!", key);
}
+ (NSString *)valueForKey:(NSString *)key {
NSError *error = nil;
NSString *value = [self passwordForService:SERVICE account:key error:&error];
if (error && error.code != errSecItemNotFound) {
NSAssert(!error, @"Unable to retrieve keychain value for key %@ error %@", key, error);
LogError(@"Unable to retrieve keychain value for key %@ error %@", key, error);
}
return value;
}
+ (BOOL)removeAllValues {
LogInfo(@"Completely Reseting Keychain");
return [[self accountsForService:SERVICE] all:^BOOL(NSDictionary *accountInfo) {
return [self deletePasswordForService:SERVICE account:accountInfo[@"acct"]];
}];
}
@end
Grande majorité du temps, c'est très bien. Parfois, je vais frapper l'affirmation des échecs où je suis incapable d'écrire ou de lire des porte-clés, provoquant des critiques échec d'assertion.