字符串的值类型?没有会员组件。 (结构)

时间:2017-06-08 20:05:31

标签: swift

我查看每个帖子,但无法找到适用于我案例的任何解决方案。 我有一个模特:

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.

所以...问题是什么?

1 个答案:

答案 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: ", ") ?? []