我从我尝试升级到最新 Swift 版本的项目中的这部分代码中得到一个“表达式类型不明确,没有更多上下文”。我似乎想不通。我尝试了不同的东西,但无法让它工作。
问题出在这行的语法上
let imageToDeleteParameters = imagesToDelete.map { ["id": $0.id, "url": $0.url.absoluteString, "_destroy": true] }
完整代码:
extension TutorialCreationRequest: WebserviceParametrable {
func toParameters() -> [String: AnyObject] {
let imageParameters = images.map { ["url": $0] }
let imageToDeleteParameters = imagesToDelete.map { ["id": $0.id, "url": $0.url.absoluteString, "_destroy": true] }
return [
"title": title,
"is_draft": isDraft,
"difficulty": difficulty,
"duration": duration,
"cost": cost,
"user_id": userId,
"description": description,
"to_sell": toSell,
"images": [imageParameters, imageToDeleteParameters].flatMap { $0 }
]
}
}
当函数的参数名错误时,就会发生这种情况。
例:
functionWithArguments(argumentNameWrong: , argumentName2: )
你声明你的函数是:
functionWithArguments(argumentName1: , argumentName2: ){}
这通常发生在您更改变量名称时。确保在执行此操作时进行重构。
如果突出显示的方法或属性的任何部分试图访问具有不正确类型的属性或方法,则可能会发生这种情况。
以下是故障排除清单,请确保:
一个战略
例如,假设您正在自定义类型数组上运行 compactMap
。在传递给 compactMap
方法的闭包中,初始化并返回另一个自定义结构。当您收到此错误时,很难判断代码的哪一部分有问题。
for in
循环而不是 compactMap
。此时,您可能会实现,例如,您认为要分配的属性实际上有一个属性,该属性具有您希望传递的实际值。
不是这个问题的答案,但是当我在这里寻找错误时,其他人可能会发现这也是有用的:
对我来说,当我尝试在数组上使用for(index,对象)
循环而不添加时,我遇到了这个Swift错误。枚举()
部分…