因此,我正在为Swift泛型而苦苦挣扎。我正在尝试创建在其他模块中定义的结构的实例。该结构的属性具有通用类型。
模块代码:
public struct MyModuleResponse<T> {
let payload: T?
}
主要目标代码:
@import MyModule
....
let payload = "Something"
let result = MyModuleResponse(payload: payload)
这会导致错误:
无法将“字符串”类型的值转换为预期的参数类型“ _?”
如果我在主要目标中声明了该结构的相同版本:
public struct MyOwnResponse<T> {
let payload: T?
}
let payload = "Something"
let result = MyOwnResponse(payload: payload)
没有错误,并且按预期构建。
我的设置:
示例项目可在此处找到:https://github.com/cameroncooke/generics
任何能帮助我了解这里发生的事情的人都会非常感激。
了解Swift type _
的含义,_
的含义也很有用。该错误消息非常含糊,并没有给出任何线索。
答案 0 :(得分:3)
正如达维德所说,payload
变量必须是可选的。
Swift初始值设定项的默认保护级别为internal
。您需要将MyModuleResponse初始化程序的保护级别设置为public
。
public init(payload: T?) {
self.payload = payload
}