Swift - Enregistrer le tableau de dictionnaires dans NSUserDefaults
J'ai un panier vide tableau -> var cart: [Dictionary<String, Any>] = []
Et j'ai 2 écrans, productsView et resumeView. Dans les produits de vue j'ai quelques produits. Lorsque l'utilisateur clique sur un produit, cela va du le panier:
cart = [[name: "A", price: "1", qty: "1"]]
Si l'utilisateur appuie sur plus produits:
cart = [[name: "A", price: "1", qty: "3"],[name: "B", price: "2", qty: "1"]]
Maintenant, lorsque l'utilisateur a fini d'ajouter des produits au panier, j'en veux pour preuve le second point de vue avec la liste de produits, et l'utilisateur peut apporter des modifications aux produits "qté" ou de supprimer des produits. Si l'utilisateur tape sur le dos et va à l'écran de la première, j'en veux pour preuve la liste à jour.
Je veux utiliser NSUserDefaults pour sauver mon tableau et afficher les données mises à jour entre les écrans. Mais j'obtiens l'erreur suivante:
Type '[Dictionary<String, Any>]' does not conform to protocol 'AnyObject'
source d'informationauteur pekpon
Vous devez vous connecter pour publier un commentaire.
modifier/mise à jour: dans Swift 3 votre type de dictionnaire serait ok.
Afin de déclarer votre tableau de dictionnaires comme
[[String: Any]]
dans Swift 3 serait parfait:Xcode 8 • Swift 3
Vous avez juste besoin de changer la façon dont vous devez déclarer votre tableau de dictionnaires. Vous devez utiliser
[String: AnyObject]
au lieu de[String: Any]
. Vous devez faire comme suit:Swift 2.3
Vous utilisez Tout ce qui n'est pas conforme à AnyObject. Utilisation AnyObject pour déclarer votre dictionnaire,
C'est à cause que vous essayez de stocker un tableau comme "AnyObject".
Ce que vous devez faire est de:
Vous pouvez ensuite accéder à votre dictionnaire comme ceci:
Si vous souhaitez stocker la totalité de l'ensemble en même temps:
Ensuite, vous pouvez utiliser ceci: