Swift中向Books数组添加VolumensData类型数据的正确语法?
解决Swift结构体数组添加元素的语法问题
你这里的问题出在初始化VolumensData结构体的方式上——你误用了字典的语法,但实际上需要按照结构体的初始化规则来创建实例。
先看你原来的错误代码片段:
dataBooks.append(Books(name: "Tom Sawyer", imagenCover: "sawyer-cover", volumes: [fileVolumen: "file-1", fileVolumen: "file-2"]))
这里存在两个核心问题:
volumes参数要求接收一个VolumensData类型的实例,而不是字典fileVolumen是VolumensData内部的属性名,不能直接当作字典的key来使用
正确的做法是,先创建VolumensData的实例,将fileVolumen设置为包含目标字符串的数组(因为它是可选类型,也可以传入nil),再把这个实例传给Books的volumes参数。
修正后的完整代码如下:
struct Books { let name: String let imagenCover: String let volumes: VolumensData } struct VolumensData { let fileVolumen: [String]? } var dataBooks = [Books]() // 正确初始化VolumensData并添加到数组 dataBooks.append(Books( name: "Tom Sawyer", imagenCover: "sawyer-cover", volumes: VolumensData(fileVolumen: ["file-1", "file-2"]) ))
如果不需要fileVolumen的内容,也可以传入nil:
dataBooks.append(Books( name: "Tom Sawyer", imagenCover: "sawyer-cover", volumes: VolumensData(fileVolumen: nil) ))
最后提个小细节:imagenCover的命名应该是imageCover(少了一个字母'e'),虽然这不是语法错误,但更符合Swift的命名规范哦~
内容的提问来源于stack exchange,提问作者AlbertB
相关产品推荐
相关产品推荐

