Swift中的扩展

我在以前的博客中使用过Extension for Label。 在那里,我在扩展中添加了所有代码,但是您为什么想在本章中知道为什么这样做,我将很清楚所有这些东西在您自己的项目中创建和使用非常容易。

什么是扩展?

扩展为现有的class , structure , enumeration , or protocol type添加了新功能。 这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模)。

扩展类似于Objective-C中的类别。 (与Objective-C类别不同,Swift 扩展没有名称。)

资料来源–苹果文件。

创建您的第一个扩展

通过写出类或Controller类(如extension和类名)的侧面, 扩展很容易创建

 扩展UserModel { 
//您的功能
}

您可以将其用于符合协议

如果您在项目中使用表格视图,则需要使用这些方法来确认协议,但是,如果项目中以及其他协议中有很多方法,那么这将很难管理,并且大多数情况下,我们在查找代码时会遇到问题在我们班里。

在这个类中,您可以看到,这是每个这样开始开发的开发人员在开始阶段的基本代码。

如果您开始从事实际项目,这是一个很小的类,那么将有更多的功能和对象变得更加难以快速查找或检查您的代码。

现在,您可以非常清楚地看到您的代码被分为具有适当功能标识的组,其中Extension非常清楚地在此处定义了代码。

额外提示–“ MARK ”这将在文档编制过程中出现。 您可以访问NSHipster )链接以更好地理解Swift语言中的代码文档。

带扩展的代码分离

您可以借助扩展来编写属于特定协议的单独协议方法。 当您将来再次在同一个类中进行工作或进行修改时,它非常易于理解的代码。

  芒果类: UIViewController { 

覆盖func viewDidLoad (){
超。 viewDidLoad ()
}
} // MARK :-TableView数据源方法
扩展芒果UITableViewDataSource { func tableView (_ tableView:UITableView, numberOfRowsInSection 部分 :Int)-> Int {

}

func tableView (_ tableView:UITableView, cellForRowAt indexPath :IndexPath)-> UITableViewCell {

}
}

让我们看看扩展的用途

在这里,我正在创建模型,它将支持多个自定义初始化程序。

  struct UserModel :可编码{ 
var 名称 :字符串
var userId :Int
}扩展UserModel {
枚举CodingKeys :字符串, CodingKey {
案例名称 =“用户
case userId =“ user_id”
}
}扩展UserModel {
// MARK:-初始化
初始化 (_ dic :[String:Any]){
自。 名称 = dic [“ user_name”]如? 字符串?? ”
自。 userId = dic [“ user_id”]如? Int ?? 0
}
}

可以使用不同方式的一种模式🚀

自定义初始化程序的使用
 让字典= [“ user_name”:“ Rahul”,“ user_id”:43] 作为 [String:任何] //模型初始化类型 
// 1 let model = UserModel (名称:“ Anand”,userId:1)
model.name // 2 let newModel = UserModel (字典)
newModel.name // 3 {
//我们从网络请求中获取的数据
让解码器= JSONDecoder ()
让数据=尝试! JSONSerialization .data(withJSONObject:dictionary,options:[])//测试数据
让响应=尝试解码器 .decode( UserModel .self,来自:数据)
print(response)//输出
} 捕获 {打印(错误) }

让我们尝试其他事情

您可以为任何 class 例如–

 扩展字符串 { 
// MARK:-用于String的首字母大写
private func capitalizingFirstLetter ()->字符串{
让first = String(self.prefix(1))。大写
让其他= String(self.dropFirst())
返回第一+其他
}

变异func capitalizeFirstLetter (){
自我=自我。 capitalizeFirstLetter ()
}} //扩展名的使用
var testString =“橙色”
testString。 capitalizeFirstLetter ()
print (testString) //输出-橙色

结论

在这一部分中,我已经介绍了如何创建扩展及其使用。 现在,您已经从基本使用到高级了解了。 您可以为任何class , structure , enumeration , or protocol.创建自己的扩展class , structure , enumeration , or protocol.扩展Swift语言中一个非常强大的功能。 您可以使用代码来制作更简单易懂的功能。 您可以根据自己的理解和要求编写独立且易于管理的代码。 我已经为扩展添加了Git存储库 ,您可以检查它。 🎉


谢谢 !

如果您对本教程有任何疑问? 推特我: @Anand