练习“在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 =消息
}
}