Swift 2.x到Swift 3,XCode抱怨错误:“字符串!”不能转换为“字符串”

Swift 2.x到Swift 3,XCode抱怨错误:“字符串!”不能转换为“字符串”,swift,xcode,swift3,Swift,Xcode,Swift3,从Swift 2.x迁移到Swift 3时,出现错误“String!”不能转换为第行显示的“字符串” self.cartItemController.textCombinationsToDisplayInCart[pCombinationsPickerView.combinationName as String]=combinationValue["Name"] 有人知道如何纠正这一点吗 func setTextCombinationsToDisplayInCart(_ p

从Swift 2.x迁移到Swift 3时,出现错误“String!”不能转换为第行显示的“字符串”

self.cartItemController.textCombinationsToDisplayInCart[pCombinationsPickerView.combinationName as String]=combinationValue["Name"]
有人知道如何纠正这一点吗

func setTextCombinationsToDisplayInCart(_ pCombinationsPickerView:CombinationsPickerView,pRow:Int) {
    var combinationValue:[NSString : NSObject]=pCombinationsPickerView.combinationValues[pRow] as! [NSString : NSObject]
    if(pCombinationsPickerView.combinationID != 1) { //Personnalisation 
        self.cartItemController.textCombinationsToDisplayInCart[pCombinationsPickerView.combinationName as String]=combinationValue["Name"]
    }
}
问题是myVar作为String返回String?而不是字符串

您可以改为使用myVar作为!字符串,如果您确信此转换将始终有效


但是,如果您担心强制类型转换可能返回nil optional,您可以尝试使用guard语句

我将[pCombinationsPickerView.combinationName as String]替换为[pCombinationsPickerView.combinationName as!String],但现在替换为:从“String!”强制强制转换“字符串”总是成功的,你用“as”了吗?Xcode建议替换为“as!”通过“as”…问题可能在右边。combinationValue[Name]是一个NSString。您需要将其用作转换。非常感谢,我通过以下方式解决了此错误:我替换self.cartItemController.textcombinationstodisplayinternatt[pCombinationsPickerView.cobinationname as String]=cobinationvalue[Name]by self.cartItemController.textcombinationstodisplayinternatt[pCombinationsPickerView.cobinationname as String]=组合值[名称]