Énumérer tous les Trousseau d'articles dans mon application iOS
Quelle est la façon la plus simple par programmation (à partir de mon application) obtenir tous les éléments stockés dans le trousseau de clés?
Il a probablement quelque chose à voir avec SecItemCopyMatching(), mais la documentation de cette fonction n'est pas très clair (et je n'ai pas réussi à trouver un travail décent de l'échantillon sur le web).
Vous devez vous connecter pour publier un commentaire.
SecItemCopyMatching
est le droit d'appel pour que. Nous avons d'abord construire notre requête dictionnaire de sorte que les attributs sont retournés dans les dictionnaires, et que tous les éléments sont retournés:Comme
SecItemCopyMatching
nécessite au moins la classe de l'retournéSecItem
s, nous avons créer un tableau avec toutes les classes......et pour chaque classe, définissez la classe dans notre requête, appel
SecItemCopyMatching
, et enregistrer le résultat.Dans le code de production, vous devez vérifier que le
OSStatus
retourné parSecItemCopyMatching
est soiterrSecItemNotFound
(aucun article trouvé) ouerrSecSuccess
(au moins un item a été trouvé).SecItemCopyMatching
. Si c'esterrSecItemNotFound
, vous n'avez pas stocké un porte-clés des éléments de votre application iOS, vous n'aurez pas de retour.Swift 4 mise à jour @Cosmin réponse
Swift 3+ version qui renvoie également les touches (kSecAttrAccount):
let key : String = item[kSecAttrAccount] as! String
avecCould not cast value of type '__NSCFData' (0x109b30348) to 'NSString' (0x1069030d0).
. Je ne sais pas pourquoi.if let key = item[kSecAttrAccount] as? String, let value = item[kSecValueData] as? Data {
Swift 3 version avec xcode 9.1
Peut être appelée comme :
Mis à jour pour inclure kSecClassIdentity et kSecClassCertificate de l'information dans le dictionnaire
Aussi, je ne pense pas que l'appel de withUnsafeMutablePointer(pour:_:) est nécessaire.