【问题标题】:Swift: Type 'Item' has no member 'init'Swift:类型 \'Item\' 没有成员 \'init\'
【发布时间】:2022-11-13 12:26:31
【问题描述】:

我有一个小例子,该行

items.append(Item(value: "A", id: index))

失败并显示“类型'项目'没有成员'init'”,我不明白这个问题。你能帮我吗?

struct Model<Item> where Item: Equatable {
    
    var items = Array<Item>()
    
    init(){
        items.append(Item(value: "A", id: index))
    } 
}

struct Item: Identifiable, Equatable {
    static func == (lhs: Item, rhs: Item) -> Bool {
        return lhs.id == rhs.id
    }
    
    var value: any Equatable
    var id: Int
}

【问题讨论】:

  • 目前尚不清楚您要使用此代码做什么。为什么Model 是通用的?为什么它的类型参数和结构Item同名?

标签: swift generics


【解决方案1】:

如果存在未声明为可选的未初始化变量,则 Swift 中的 struct 需要初始化程序。您需要通过编写init() 方法将变量设为可选或创建初始化程序,如下所示:

init(id: Int, value: Any) {
    self.id = id
    self.value = value
}

【讨论】:

  • 这是不正确的。如果您不自己添加显式 init,则 Swift 结构会自动为所有属性提供隐式 init
猜你喜欢
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多