nontomatic nontomatic - 7 days ago 12
Swift Question

Swift 3 warning: Non-optional expression of type 'String' used in a check for optionals

I'm updating a project to Swift 3 and came across the following warning which I can't seem to resolve.

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

}


The answer to a similar question here didn't help me: Non-optional expression of type 'AnyObject' used in a check for optionals

Thanks a lot!

Answer

You are trying to unwrap a value that is already unwrapped, and hence you are getting an error because it doesn't need unwrapping again. Change your if statement to look like the following and you should be golden:

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

Unfortunately there is no way to bind the variable within the if statement, hopefully they'll add one in the future.