【问题标题】:How do define the return type of var as empty array in the struct?如何将 var 的返回类型定义为结构中的空数组?
【发布时间】:2019-10-17 05:52:07
【问题描述】:

在 API 调用期间,我将 var 爱好设为 [] 那么如何定义类型为空数组的 var

{
  "name": "Alex",
  "hobbies": []
}
struct User : Decodable{
var name : String
var hobbies : []
}

【问题讨论】:

  • 你的爱好键不会一直是空的,对吧?你的兴趣爱好是什么类型的数据?
  • 爱好应该是不为空时的类型。例如[Hobby] 的值可以是 [](一个空数组)。

标签: swift struct swift5


【解决方案1】:

假设 hobbies 数组为 Int:

struct User{
    var name : String
    var hobbies:[Int]
}

用法:

let user = User(name: "Test", hobbies: [0,1,2])

【讨论】:

  • 但是如果hobbies[] 不包含任何数据,那我该怎么办??
  • @USB 你可以用 Any 代替 Int
  • 当我尝试 var hobbies 时:[Any] 我收到“无法自动合成 'Decodable' 因为 '[Any]' 不符合 'Decodable'”错误
【解决方案2】:

即使从您的 API 响应的数组是空的,但它必须有自己的类型。

我相信你不能声明为No Type Array。至少,您可以将其声明为

var hobbies: [Any]如果你不知道回复的类型

【讨论】:

  • 当我尝试 var hobbies: [Any] 时,我收到“无法自动合成 'Decodable' 因为 '[Any]' 不符合 'Decodable'”错误
  • 如果您使用的是Decodable,请确保您知道正确的回复类型。尝试与您的后端开发人员交谈以了解hobbies 的类型。例如,如果您的后端开发人员说 hobbies 的 [String] 类型,那么只需输入 var hobbies: [String]
【解决方案3】:

试过了吗?

struct User {
 var name : String
 var hobbies:[String]?
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2022-01-12
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多