我查看每个帖子,但无法找到适用于我案例的任何解决方案。 我有一个模特:
import Foundation
public struct Destinos: Data {
public var idDestino : Int?
public var desDestino : String?
public func dictionary() -> NSDictionary {
let dictionary = NSMutableDictionary()
dictionary.setValue(self.idDestino, forKey: "idDestino")
dictionary.setValue(self.desDestino, forKey: "desDestino")
return dictionary
}
}
所以我想改变desDestino" string"到[String]以便稍后使用并在tableView中显示。为此。我将这行代码写在另一个file.swift:
中var cadena = Destinos()
cadena.desDestino = "HOLA, nada, algo, otra, cosa, mas que eso"
let array = cadena.desDestino.components(separatedBy: ", ") // in this line i get the error: value type of string? has no member components.
所以...问题是什么?
答案 0 :(得分:1)
这里没有理由使用NSDictionary
。只需使用原生的Swift词典(带文字)。
public struct Destinos {
public let idDestino : Int?
public let desDestino : String?
public func toDictionary() -> [String: Any?] {
return [
"idDestino": idDestino,
"desDestino": desDestino
]
}
}
至于生成阵列,您有两个问题:
1. components(seperatedBy:)
拼错了
2. cadena.desDestino
是一个尚未解开的String?
(也称为Optional<String>
)。处理此问题的最好方法是使用可选链接,然后在??
为cadena.desDestino
的情况下使用nil coalescence(nil
)使其成为空数组。
var cadena = Destinos(
idDestino: 123,
desDestino: "HOLA, nada, algo, otra, cosa, mas que eso"
)
let array = cadena.desDestino?.components(separatedBy: ", ") ?? []