练习“在Swift中面向协议编程”的简单代码

这篇文章是使用协议,协议继承,结构和委托针对POP“面向协议的编程”的快速入门。 该样本将为申请大学提供一个简单的过程

步骤如下:

创建项目后,添加一个名为“ Person.swift”的新文件。

步骤1:创建一个名为Person的协议:

协议人{

var firstName:字符串{获取设置}

var lastName:字符串{获取设置}

init(fName:String,lName:String)

func getFullname()->字符串

}

步骤2:创建从称为“申请人”的人员继承的协议:

协议申请人:{

var email:字符串{获取设置}

var grade:浮动{get set}

}

步骤3:创建从申请人继承的协议,该协议称为Student:

协议学生:申请人{

var studentId:字符串{获取设置}

var dateOfStar:日期{get}

}

步骤4:创建一个名为WelcomeMessageDelegate的协议。 此功能将处理视图上显示的结果。

协议WelcomeMessageDelegate {

func displayNameDelegate(消息:字符串)

}

步骤5:创建注册结构。

除了编写上述函数,我们还需要一个init函数。 Xcode将帮助您编写根据上述步骤定义的所有属性。

结构注册:学生{

init(fName:String,lName:String){

self.firstName = fName

self.lastName = lName

self.email =“”

self.grade = 0.0

self.studentId =“”

self.dateOfStar = Date()

}

var welcomeMessageDelegate:WelcomeMessageDelegate吗?

var studentId:字符串

var dateOfStar:日期

var email:字符串

var等级:浮动

var firstName:字符串

var lastName:字符串

func getFullname()->字符串{

返回“ \(self.firstName)\(self.lastName)”

}

func reportResult(){

var resultMessage:String =“尊敬的\(self.getFullname())”

如果self.grade> 80.0 {

resultMessage = resultMessage +“ \ n您具有\(self.grade)等级,并且通过了:)”

}

其他{

resultMessage =“尊敬的\(self.getFullname())\ n您具有\(self.grade)等级,但失败了:((

}

welcomeMessageDelegate?.displayNameDelegate(消息:resultMessage)

}

}

现在我们可以使用上面的代码了。 我们需要具有以下UI。

编写以下代码

类ViewController:UIViewController,WelcomeMessageDelegate {

var registration:注册?

@IBOutlet弱var txtFirstName:UITextField!

@IBOutlet弱var txtLastName:UITextField!

@IBOutlet弱var txtEmailAddress:UITextField!

@IBOutlet弱var txtGrade:UITextField!

@IBOutlet弱var btnApply:UIButton!

@IBOutlet弱var tvResult:UITextView!

覆盖func viewDidLoad(){

super.viewDidLoad()

//加载视图后进行其他任何设置,通常是从笔尖进行。

}

@IBAction func doStart (_ sender:Any){

如果self.txtFirstName.text!.isEmpty || self.txtLastName.text!.isEmpty {

返回

}

如果注册==无{

注册=注册(fName:self.txtFirstName.text !, lName:self.txtLastName.text!)

self.btnApply.isHidden = false

self.txtEmailAddress.isHidden = false

self.txtGrade.isHidden = false

}

}

@IBAction func doApply (_ sender:Any){

self.registration?.welcomeMessageDelegate =自我

如果让strGrade = self.txtGrade.text! 如? 字符串{

如果让grade = Float(strGrade){

self.registration?.grade =等级

self.txtGrade.resignFirstResponder()

self.registration?.reportResult()

}

}

}

func displayNameDelegate (消息:字符串){

self.tvResult.isHidden = false

self.tvResult.text =消息

}

}