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

Swift中构建SpaceX API Mock数据时Links初始化的疑问

解决Mock数据中Links参数的填充问题

首先,基于SpaceX API的返回结构,先确认你的Patch、Links、Launch结构体大概是这样(如果和你的定义有出入,调整对应字段即可):

struct Patch: Codable {
    let small: String?
    let large: String?
}

struct Links: Codable {
    let patch: Patch?
    let reddit: Reddit?
    let flickr: Flickr?
    // 其他你定义的字段如webcast、article等
}

struct Launch: Codable {
    let id: String
    let name: String
    let links: Links
    // 其他字段如date_utc、success等
}

// 补充你可能定义的嵌套结构体示例
struct Reddit: Codable {
    let campaign: String?
    let launch: String?
}

struct Flickr: Codable {
    let small: [String]?
    let original: [String]?
}

接下来,在你的successState函数中,逐层初始化嵌套结构体即可:

func successState() -> Launch {
    // 构造Patch的Mock数据
    let mockPatch = Patch(
        small: "https://example.com/small-patch.jpg",
        large: "https://example.com/large-patch.jpg"
    )
    
    // 构造Links里的其他嵌套结构体(如果有)
    let mockReddit = Reddit(
        campaign: "https://example.com/reddit-campaign",
        launch: "https://example.com/reddit-launch"
    )
    
    let mockFlickr = Flickr(
        small: ["https://example.com/flickr-small-1.jpg"],
        original: ["https://example.com/flickr-original-1.jpg"]
    )
    
    // 构造Links实例
    let mockLinks = Links(
        patch: mockPatch,
        reddit: mockReddit,
        flickr: mockFlickr
        // 补充你定义的其他Links字段,无需填充的可选字段传nil即可
    )
    
    // 构造最终的Launch实例
    return Launch(
        id: "mock-launch-1",
        name: "Mock Falcon 9 Launch",
        links: mockLinks,
        date_utc: "2024-01-01T12:00:00Z",
        success: true
        // 填充其他Launch字段
    )
}

注意事项

  • 如果结构体中的字段是可选类型,不想填充内容可以直接传nil,比如patch: nil
  • 可以用占位图片URL,或者本地Asset图片的对应路径(如果使用本地资源)
  • 直接复用调试时获取的真实API返回字段值,能让Mock数据更贴近真实场景

内容的提问来源于stack exchange,提问作者jat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:35:24