2

我正在使用一个具有“用户”协议的框架,该协议列出了所有所需的属性,该协议也有一个空的 init 方法。我需要创建一个用户,但我使用协议创建的任何实例都抱怨 init 没有初始化所有属性

框架协议

public protocol User {

/// Name
public var firstname: String { get set }

/// Lastname
public var lastname: String { get set }

///Init
public init()
}

我将如何使用此协议创建自己的结构并向 init 上的参数添加值?

提前致谢!

4

1 回答 1

1

您可以使用如下:

struct MyAppUser: User {

   // default init coming from protocol
   init() {
       self.firstname = ""
       self.lastname = ""
   }

   // you can use below init if you want
   init(firstName: String, lastName: String) {
       self.firstname = firstName
       self.lastname = lastName
   }

   // coming from protocol
   var firstname: String
   var lastname: String
}

// user 1
var user1 = MyAppUser()
user1.firstname = "Ashis"
user1.lastname = "laha"
print(user1)

// user 2
let user2 = MyAppUser(firstName: "Kunal", lastName: "Pradhan")
print(user2)

输出:

MyAppUser(firstname: "Ashis", lastname: "laha")
MyAppUser(firstname: "Kunal", lastname: "Pradhan")
于 2018-02-24T13:43:16.707 回答