扩展那些本机类!
正如我在上一篇关于全局可用函数的文章中提到的那样,有时我们不需要编写一个函数。 我们可以扩展本机类以从中获取更多信息。
如果您不了解iOS Swift扩展,请在此处了解它们。
扩展的主要优势也许,至少对我而言是……
iOS扩展也可以扩展本机类
因此,如果您需要现有组件/元素的额外功能或扩展本机类的功能,则只需为其编写一个扩展。 它可以驻留在应用程序中存在的任何文件中。 声明扩展名后,您可以将它们用作所有扩展类的函数。
让我们从一些示例开始,以阐明我的观点。
假设我们需要带下划线的标签。 将此粘贴到您的代码中的任何位置。
现在,我们的UILabel类具有一个名为下划线的新功能,可在整个应用程序中使用。 假设我们有一个类似下面的标签,
我们可以通过添加以下行来使用下划线类,
label.underline()
扩展了UIKit的基本UILabel类后,我们的下划线功能可用于UILabel类或UILabel扩展的每个组件!
所以我们的实现看起来像这样,
这是一个非常基本的例子。 但是它也可能非常非常强大!
让我们看另一个例子,一个更原始的格式化方式,但仍然是必需的。
每当需要大量显示时,都需要用逗号格式化整数。 如果我们要在项目中以逗号格式格式化任何整数,则可以添加一个扩展本机Int类的附加函数,如下所示:
现在,我们可以像下面在代码中所需要的任何地方那样利用它。
让量= 1000000000
打印(“逗号格式:\(amount.withCommas())”)
//返回“逗号格式:1,000,000,000”
那不方便吗?
现在,如果是货币金额怎么办? iOS专用于此用例的格式化程序。 我们可以将NumberFormatter类和扩展名一起使用,以在全局范围内使用此格式化程序,就像我们编写扩展Int类的逗号分隔符功能一样。
让我们定义另一个扩展,但是为此,我们将扩展Double类,因为无论如何货币最有可能是double类型!
现在,就像下面和中提琴一样使用它!
print(amountDbl.currencyString()??“”)
//返回“ $ 1,000,000,000.00”
当然,您可以覆盖语言环境以获得其他格式的货币。
为此,我们将不得不稍微重写一下我们的函数。 首先,我们需要将语言环境字符串作为函数参数。 我们将改变这一点,
formatter.locale = Locale.current
进入这个
formatter.locale =语言环境(标识符:someString)
在这里,占位符someString将替换为我之前告诉您的区域设置字符串参数。
因此,我们更改后的功能现在应该看起来像这样,
现在,如果我们使用它,它将以您指定的语言环境返回格式化的数量字符串。
print(amountDbl.currencyString(locale:“ en_IN”)??“”)
//返回“₹1,00,00,00,000.00”
print(amountDbl.currencyString(locale:“ en_FR”)??“”)
//返回“€1 000 000 000,00”
看到方便吗?