“String”类型的值在强制中不符合“Any”

时间:2017-10-27 16:57:09

标签: json swift4

let jsonResult = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String : Any]
let jsonString = jsonResult.map { 
    return ($0.key, "\($0.value)" == "<null>" || "\($0.value)" == "nil" ? "null" : "\($0.value)")
}
httpPOST(to: "\(postURL)/process/", withData: [("user" , userID), ("password", password)] + jsonString) {
    reply in
    Log.debug("Made request with \(jsonResult["sessionID"] as Optional) replyed \(reply as Optional)" as Any)
}

我遇到了Log.debug()行的问题。我继续得到'类型'字符串'的价值不符合'强制'中的'任何'。我不确定如何将其格式化为更好的一行。

1 个答案:

答案 0 :(得分:0)

你自己一个忙,不要在\()内部转储复杂的表达式

let sid = jsonResult["sessionID"] as whatever

然后

Log.debug("Made request with \(sid)...

我有这个'String'在另一个地方不符合'Any' 情况比你

并且使用了一个笨拙的冗长版本,可以看到我的会话ID等同于它的类型(类型)。

一旦我停止将所有内容放到厨房,并考虑到那个看起来很聪明的字符串(外推法)中,我就会遇到与swift编译器不同的,更友好的错误。

假设swift编译器很笨:它确实比看起来暗,所以请参见上文。