web-dev-qa-db-fra.com

Avertissement Swift 3: expression non facultative de type 'String' utilisée dans une vérification d'option.

Je mets à jour un projet vers Swift 3 et suis tombé sur l'avertissement suivant que je n'arrive pas à résoudre.

fileprivate var filteredTitlesList: [String] = []

if let filteredTitle: String = filteredTitlesList[indexPath.row] as String { // 'Non-optional expression of type 'String' used in a check for optionals'

  // Do something

}

La réponse à une question similaire ne m’a pas aidé: Expression non-optionnelle du type 'AnyObject' utilisée dans une vérification d’options

Merci beaucoup!

9
nontomatic

Vous essayez de décompresser une valeur déjà décompressée et vous obtenez donc une erreur car elle n'a pas besoin d'être décompressée à nouveau. Modifiez votre déclaration if pour qu'elle ressemble à ce qui suit et vous devriez être en or:

if filteredTitleList.count > indexPath.row {
    let filteredTitle = filterdTitleList[indexPath.row]
}

Malheureusement, il n'y a aucun moyen de lier la variable dans l'instruction if. J'espère qu'ils en ajouteront une dans le futur.

11
Jacob King

Une autre possibilité de cet avertissement est lorsque vous essayez de mettre une instruction, par exemple: let keyboardFrame: CGRect = keyboardFrameValue.cgRectValue dans une instruction conditionnelle telle que if ou guard 

0
Ali