有没有办法在swift中自定义变量命名的声明?

时间:2018-03-14 07:47:19

标签: ios swift variables naming-conventions

我正在尝试在字典中初始化一个值,如下所示,

var og:image: String

但在og:后,它尝试将考虑og的类型作为变量分配给site_name,这显然是错误的。

  

有没有办法将og:image作为变量分配给String类型使用   特殊或转义字符?

reference中,在这种情况下,apple没有对变量命名约定提供任何有意义的解释。

编辑-1:

以下是澄清字典usage的代码片段在JSON解析数据结构中,

struct Metadata: Decodable{
    var metatags : [enclosedTags]
}
struct enclosedTags: Decodable{
    var image: String
    var title: String
    var description: String
    var og:site_name: String
}

3 个答案:

答案 0 :(得分:1)

你不能使用:(冒号)。但如果你真的想要:

var ogCOLONimage: String
分开开玩笑。您可以使用词典或类似的东西:

var images: [String: String] = ["og:image" : "your string"]

现在,您可以使用og:image访问images["og:image"]数据。

答案 1 :(得分:0)

Swift允许您在命名变量时使用几乎任何字符。您甚至可以使用Unicode字符。

但是,有一些限制:

  

常量和变量名称不能包含空格字符,数学符号,箭头,专用(或无效)Unicode代码点或行和框图字符。它们也不能以数字开头,尽管数字可能包含在名称的其他地方。

说,不可能在变量的名称中使用:。但是,您可以使用与该符号类似的Unicode字符。根据您的需要,这可能是一个有效的解决方案。

这里有一个类似于:的Unicode字符列表,可以在变量名称中使用:

https://www.compart.com/en/unicode/based/U+003A

根据您提供的示例,它将是:

struct Metadata: Decodable{
    var metatags : [enclosedTags]
}
struct enclosedTags: Decodable{
    var image: String
    var title: String
    var description: String
    var og:site_name: String
}

答案 2 :(得分:0)

根据结构中变量的命名特异性(即CodingKeys),swift有它自己的特性,所以就我而言下面的命名约定有效,

   struct Metadata: Decodable{
        var metatags: [enclosedTags]

    }
        struct enclosedTags: Decodable{
            let image: String
            let title: String
            let description: String
            let siteName: String

            private enum CodingKeys : String, CodingKey{
                case image = "og:image", title = "og:title", description = "og:description", siteName = "og:site_name"
            }

@hamish在评论(感谢队友!)

中正确地指出了这一点