迅捷泛型
Hola技术人员,直到现在我们所有人都已经阅读了许多有关最酷的主题泛型的博客和文章,但仍然有模糊的想法吗?
让我们尝试再次擦拭灰尘。 通用功能使程序更灵活,可重用和可伸缩,可以与任何类型的数据类型一起使用。 泛型是Swift非常强大的功能。 大多数基于泛型的库和框架。 甚至我们在日常编码生活中都使用了泛型而不了解它。 示例:数组和字典都是swift的通用集合类型,它们可以容纳任何类型的数据类型,例如Int,String,CGPoint等。让我们不必过多谈直接进入一些实际的东西。
让我们编码…
假设我们有一个电子商务应用程序,并且必须在该应用程序上的大部分位置显示金额标签,并且金额也来自服务器,而该服务器也不是特定的数据类型,有时是Int,Float,Double并可能是String本身。
因此,我们通常要做的是。
每次都厌倦了类型转换,如果我们得到一个函数,可以传递任何类型的数据类型,该函数会将其转换为带有$($)的字符串,以便将其直接传递给我们的UILabels或UIButtons。 是不是很酷。
在上面的扩展中,我们符合我们的协议,在该协议中,我们还将返回Double和String的转换,并附加了美元货币。 我们必须对所有数据类型实施相同的操作。
现在将在我们的Utilities类或Global类中编写一个全局函数amountText ,可以在整个项目中访问它而无需创建任何实例。 将使此函数公开,以便它也可以在模块外部使用,默认情况下,它将在内部使用,因此不能在定义模块之外使用。
此函数将采用通用数据类型,该数据类型均符合我们的协议AmountConversion 。
现在,使用我们的标签和按钮检查它是否可以接受。 来吧,我们来创建一个UILabel和一些带有若干数据类型的实例。
这是可以预期的数量。 并尝试直接将其与标签文本一起传递。
在这里,我们在协议中创建了一个初始化程序,这将有助于我们在通用方法中返回默认值,将在下一节中讨论它。
再次来到您的Utility或Global类,并编写一个通用方法。
它将接受所有符合我们的协议UnwrapOptional的任何类型的参数。 现在让我们创建一些可选的变量,并检查我们的函数是否给出了预期的结果。
下面一些变量具有值,而另一些则为零,让我们看看函数返回给我们什么值。
哇哈哈! 我们得到了期望的输出。 现在将进一步扩展此功能。 如果我们有任何自定义类或自定义类,在其中也有可选的var可以使用,那么它也可以是可选的链接。
能行吗
我们来看看
我有电影类,现在有一些可选变量尝试用电影类型的实例解开可选对象。
YOOO,之所以起作用,是因为最终我们试图解包已经符合我们的UnwrapOptional协议的字符串或指定的数据类型。
现在查看是否尝试解开Movie类的实例。
没运气! 它将出现错误“在参数类型’电影?’中,’电影’与预期的类型’UnwrapOptional’不符”
因此,在这里我们必须使我们的类符合协议。 并且它将为类添加必需的init,因为我们的UnwrapOptional协议具有自己的构造函数,可返回自定义类的默认值。
是的,任务完成了。 现在,我们可以尝试使用可选链接获取值。
抢啤酒! 干杯!
它的工作原理,足以满足一天的学习需求。 好了,我们了解了泛型如何与协议握手,并解决了许多问题。 泛型有很多附带功能。
欢迎反馈。
- 在Swift项目中设置C库依赖关系(第1/2部分)
- 使用Swift在iOS上进行单元测试Model View Controller
- 如何在parsing中使用includeKey查询“Or”?
- iOS 9使用快速操作selecttabbar索引,performActionForShortcutItem
- 无法从自定义dynamic框架(Swift)访问类
- Swift:parsingJSON字典值
- iOS本地化:dynamic本地化视图,而不会搞乱storyboard / nibstring文件
- 从API快速parsingCSV文件不会与分隔符分开
- 在Safari中打开WKWebview target =“_ blank”链接