В паре ключ-значение словаря, как развернуть значение, где значение может быть разных видов, в строку - PullRequest
1 голос
/ 09 февраля 2020

Значения формы Eureka возвращают необязательные значения, поэтому я хочу повторить каждое значение и развернуть их. Однако эти значения состоят из Double, Int, String. Как мне развернуть их в строку?

    let wrapped = self.formValues()

    var unwrapped = [String:Any]()

    for (k,v) in wrapped {
        unwrapped[k] = v as! String ?? ""
    }
    return unwrapped

Я получаю эту ошибку:

    Could not cast value of type 'Swift.Double' (0x7fff879c1a10) to 'Swift.String' (0x7fff879c41c8).

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

Заменить

v as! String ?? ""

на

String(v)
0 голосов
/ 09 февраля 2020

Я не уверен, что именно вы хотите, но я думаю, что вы пытаетесь привести [String: Any?] К [String: Any]

  let unwrapped: [String: Any] = wrapped.mapValues { $0 ?? "" }

или

   let unwrapped: [String: String] = wrapped.mapValues { (value) -> String in
    guard let value = value as? LosslessStringConvertible  else {
        return ""
    }
    return "\(value)"
}
...