swift 2 initialiseur conditionnelle de liaison doit avoir en Option type, n'est pas "UIImage'
Après la mise à jour de xcode pour exécuter swift 2 il me donne ces deux erreurs que j'ai du mal à résoudre.
Erreur 1 Ne peut pas l'indice d'une valeur de type '[Chaîne : AnyObject]? "avec un indice de type "Chaîne"
Code
let image : UIImage = editingInfo[UIImagePickerControllerOriginalImage] as! UIImage
Erreur 2 Initialiseur conditionnelle de liaison doit avoir en Option type, n'est pas "UIImage'
Code
if let constImage = image (Error2 display here)
{
let targetWidth = UIScreen.mainScreen().scale * UIScreen.mainScreen().bounds.size.width
let resizedImage = constImage.resize(targetWidth)
picker.dismissViewControllerAnimated(true, completion: {
() -> Void in
NetworkManager.sharedInstance.postImage(resizedImage, completionHandler: {
(error) -> () in
if let constError = error
{
self.showAlert(constError.localizedDescription)
}
})
})
}
Swift 2 fixe une tonne de mauvais casting qui existait entre Objective-C code Swift. Donc votre "constImage" variable est plus comme déjà la garantie d'une UIImage et/ou non une option de type de sorte que vous n'avez pas besoin d'conditionnellement déballer.
OriginalL'auteur 8HP8 | 2015-07-27
Vous devez vous connecter pour publier un commentaire.
Code suivant ...
... va planter si il n'y a pas
UIImagePickerControllerOriginalImage
clé ou si ce n'est pas une image.D'où vous avez obtenu
editingInfo
? Parce queimagePickerController:didFinishPickingImage:editingInfo:
n'est pas disponible en Swift. Vous devez utiliseroptional func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
.Votre deuxième erreur sur la ligne suivante ...
... est causée par
let image: UIImage = ...
ligne. Votreimage
est deUIImage
type, pasUIImage?
. Ainsi, il n'est pas facultatif et vous ne pouvez pas l'utiliser dansif let constImage = image
. Doit êtreUIImage?
si vous voulez l'utiliser de cette façon. BTW, il n'y a pas besoin d'utiliserlet image: UIImage = ...
,let image = ...
est suffisant, car le compilateur peut en déduire le type de variable à partir de votre déclaration.De le réécrire quelque chose comme ça.
Partie suivante ...
... est-ce que ...
info
dictionnaire pourUIImagePickerControllerOriginalImage
clé? si non,else {}
instruction est exécutée,UIImage
? si non,else {}
instruction est exécutée,info
avec succès coulé àUIImage
et stockées dansimage
,else {}
instruction n'est pas exécutée et notre fonction continue.Sûr de la manière d'obtenir une valeur à partir du dictionnaire de certains type de dictionnaire le type de valeur est
AnyObject
par exemple.OriginalL'auteur zrzka