【发布时间】:2021-10-09 06:40:45
【问题描述】:
我是 swift 新手,我想了解我在此声明中遇到的一个错误:
struct User: Codable, Identifiable {
var id: Int
var first_name: String
var last_name: String
}
有了这个声明:
class Data: ObservableObject {
@Published var user = User()
}
我得到:
Missing argument for parameter 'from' in call
Insert 'from: <#Decoder#>'
虽然我没有收到任何错误:
class Data: ObservableObject {
@Published var user = [User]()
}
【问题讨论】:
-
您没有使用编译器为您创建的任何 init 方法(一个带有用于所有属性的参数,一个用于 Codable)用于 User 结构,但一个没有参数。在第二种情况下,您正在为 Array 使用有效的现有 init。我可以解释更多,但我认为最好的办法是让您了解更多有关 init 方法的信息,因为它们是 swift 编程的重要组成部分
-
我唯一不明白的是为什么它是数组时不会抛出错误!
-
你应该阅读this chapter Swift Programming Language 书中关于初始化器的内容
-
因为您没有创建任何用户对象,所以您在第二个示例中创建了一个空数组