我正在尝试在字典中初始化一个值,如下所示,
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
}
答案 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
在评论(感谢队友!)