Comment créer NSMutableDictionary dans swift 2.0
J'ai récemment mise à jour de Xcode pour 7 et il contient swift 2.0 compilateur. Avant cela j'ai fait mon projet avec les anciennes version de swift. Dans la version que j'avais créer NSMutableDictionary
comme ci-dessous
let dictParams:NSMutableDictionary? = ["test" : "test",
"username" : txtEmail.text,
"password" : txtPassword.text,
"version" : "1.0",
"appId" : "1",
"deviceId" : "fasdfasdfrqwe2345sdgdfe56gsdfgsdfg"
];
dans le code ci-dessus txtEmail.text
et txtPassword.text
est mon champ de texte et remplir tha valeur au moment de l'exécution.
Ce code fonctionne correctement dans les anciennes version de swift, mais après mise à jour de swift 2.0, il me donne une erreur comme ci-dessous
Cannot convert value of type '[String : String?]' to specified type 'NSMutableDictionary?'
quel est le problème avec elle s'il vous plaît me guider.
source d'informationauteur iOS.Wolf
Vous devez vous connecter pour publier un commentaire.
Simplement en ouvrant
NSMutableDictionary
ouNSDictionary
classe des interfaces à partir de Xcode 7, vous peut facilement voir que le type sous-jacent est en fait[NSObject: AnyObject]
. Cela signifie que la valeur ne peut pas êtrenil
.Déballage des valeurs de texte comme
txtEmail.text!
outxtPassword.text!
pourrait ressembler ok et vous aider à vous débarrasser de l'erreur de compilation, mais c'est un mauvais choix, car techniquementtext
propriété deUITextField
est facultatif et que votre application peut se bloquer dans ce cas!Faire pour votre sécurité:
Par la façon dont, dans le cas où il n'est pas critique pour l'utilisation
NSMutableDictionary
considérez l'utilisation de Swift dictionnaire comme ceci:txtEmail.text
et/outxtPassword.text
sont de retour facultatif, qui est pourquoi sa vous dit de changer le type. Vous pouvez réécrire le dict comme rapide dictionnaire (qui est ce que je recommande). Lorsque vous procédez ainsi, vous pouvez soit faire l'objet facultatif, ou laissez justeString
et bang la chaîne facultative lorsque vous êtes en train de créer le dict.simple changement de
"username" : txtEmail.text!
au lieu"username" : txtEmail.text
sorte de code final est comme ci-dessous