SecItemAdd renvoie toujours l'erreur -34018 dans Xcode dans iOS 8 10 simulateur

Mise à jour: Ce problème a été corrigé dans Xcode 8.2. Trousseau de travaux dans le simulateur sans l'activation de trousseau de partage.

Pourquoi suis-je toujours recevoir l'erreur -34018 lors de l'appel de SecItemAdd fonction dans Xcode 8 /iOS 10 simulateur?

Étapes pour Reproduire

Créer un nouveau Single page app iOS de projet dans Xcode 8.
Exécutez le code suivant dans viewDidLoad (ou ouvrir cette Xcode projet).

let itemKey = "My key"
let itemValue = "My secretive bee 🐝"

//Remove from Keychain
//----------------

let queryDelete: [String: AnyObject] = [
  kSecClass as String: kSecClassGenericPassword,
  kSecAttrAccount as String: itemKey as AnyObject
]

let resultCodeDelete = SecItemDelete(queryDelete as CFDictionary)

if resultCodeDelete != noErr {
  print("Error deleting from Keychain: \(resultCodeDelete)")
}


//Add to keychain
//----------------

guard let valueData = itemValue.data(using: String.Encoding.utf8) else {
  print("🐣🐣🐣🐣🐣🐣🐣🐣🐣🐣 Error saving text to Keychain")
  return
}

let queryAdd: [String: AnyObject] = [
  kSecClass as String: kSecClassGenericPassword,
  kSecAttrAccount as String: itemKey as AnyObject,
  kSecValueData as String: valueData as AnyObject,
  kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked
]

let resultCode = SecItemAdd(queryAdd as CFDictionary, nil)

if resultCode != noErr {
  print("🐝🐝🐝🐝🐝🐝🐝🐝🐝 Error saving to Keychain: \(resultCode).")
} else {
  print("🍀🍀🍀🍀🍀🍀🍀🍀🍀 Saved to keychain successfully.")
}

Résultats Attendus

Élément est ajouté à un Trousseau de clés.

Les Résultats Réels

Fonction SecItemAdd retourne le code d'erreur suivant: -34018.

Version

Xcode version 8.1 (8B62), macOS Sierra de gestion 10.12.1.

Configuration

Se produit toujours dans Xcode 8 depuis la Beta 2 lors de l'essai de un iOS 10 simulateur.

Ne se produit PAS dans Xcode 8 lors de l'essai de un iOS 9.3 simulateur.

Démo

https://dl.dropboxusercontent.com/u/11143285/2016/07/KeychainBugDemo.zip

Références

Radar: https://openradar.appspot.com/27422249

Forums Des Développeurs Apple: https://forums.developer.apple.com/message/179846

Cette question est différente de la post suivant, parce qu'il se produit constamment dans Xcode 8. SecItemAdd et SecItemCopyMatching retourne le code d'erreur -34018 (errSecMissingEntitlement)

  • Cela semble être un problème dans Xcode 8 GM. Agréable de voir Apple est toujours au sommet de leur jeu...
  • de même pour moi, toujours cette erreur
  • Je suis vraiment creuser vos journaux de la console 🙂
  • Le problème a été résolu dans Xcode 8.2, mais il est de retour dans Xcode 9.0!
InformationsquelleAutor Evgenii | 2016-07-19