我在myModel.swift
中有一个类和一个协议public protocol IModelArgs{
var name: String { get set};
var surname: String { get set};
}
public class Model {
var name: String;
var surname: String;
init(args: IModelArgs) {
self.name = args.name;
self.surname = args.surname;
}
}
IModelArgs是传递给Model构造函数的arguments对象的协议。 在另一个文件中我需要创建Model类的实例,但是我无法将args对象传递给构造函数:我错了什么?
let myM = Model(args: ("T1","T2"));
答案 0 :(得分:3)
在你的情况下,("T1","T2")
是一个元组而不是符合你的协议的对象的主要问题。在你的情况下,它应该是这样的:
struct ArgsObject: IModelArgs {
var name: String
var surname: String
}
let myM = Model(args: ArgsObject(name: "someName", surname: "someSurname"))
但是如果您只想使用协议将对象传递给构造函数,则不需要这样做。像这样创建struct
:
struct ArgsObject {
let name: String
let surname: String
}
class Model {
var name: String
var surname: String
init(args: ArgsObject) {
self.name = args.name
self.surname = args.surname
}
}
let myM = Model(args: ArgsObject(name: "someName", surname: "someSurname"))
几条可选评论
不要使用;
和协议名称,例如ISomething
,它不是Java