web-dev-qa-db-ja.com

Swift 3警告:オプションのチェックで使用されるタイプ 'String'の非オプション式

プロジェクトをSwift 3に更新していますが、解決できないように見える次の警告に遭遇しました。

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

}

ここの同様の質問への答えは私を助けませんでした: オプションのチェックで使用されるタイプ 'AnyObject'の非オプション式

どうもありがとう!

9
nontomatic

既にアンラップされている値をアンラップしようとしているため、再度アンラップする必要がないため、エラーが発生します。 ifステートメントを次のように変更すると、黄金色になります。

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

残念ながら、ifステートメント内で変数をバインドする方法はありません。将来的に変数を追加することを期待しています。

11
Jacob King

この警告の他の可能性は、たとえば次のようなステートメントを入れようとしているときです:let keyboardFrame: CGRect = keyboardFrameValue.cgRectValueifguardなどの条件ステートメントで

1
Ali