You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:20:47