使用Swift的Awesome Extension的更聪明的print()方法
尊敬的所有iOS开发者和读者,
我的这篇文章将尝试向您介绍Swift语言在扩展方面的功能。
对于新手,
扩展为现有的类,结构,枚举或协议类型添加了新功能。 苹果
尽管在Objective-C中也可以使用扩展/类别。 但是Swift在这方面已经赋予了更多权力。 因为在Swift中,我们也可以创建原始数据类型的扩展,例如Int,Float Double。
所以我在说什么很棒的扩展。
我们一直在使用NSLog或Print来打印变量的值以进行调试。
print("Trying to print \(someVar)")
另外,我们可以从Xcode控制台使用po命令来查看变量的值。 我们也可以将p和fr v用于相同的目的,请阅读更多。
丑事:
我发现丑陋的是在变量前写了NSLog("
或print(
,在变量后写了")
。这有点使我的Raftaar在编写代码时遇到了麻烦 。
因此,如果我们只将po()
放在变量后,那会不会更聪明 。 喜欢
someVar.po()
,它将打印在控制台上,
代替
NSLog("%@",someVar) or print("Trying to print \(somevar)")
那就是我们今天要做的。
好吧,这里的主要目标是能够在任何类型的变量上调用po()
。
当我尝试创建扩展时,我正在考虑使用AnyObject
创建on。 但是幸运的是我们无法在AnyObject
上创建扩展。
经过一番研究后,我意识到所有非原始类型iOS框架的基类都是NSObject
。
所以这是价值十亿美元的扩展extension
扩展NSObject
{
func po()
{
打印(个体经营)
}
}
现在,只需在String
, Array
, Dictionary
甚至UIView
对象上调用po()
。
限制 : po()
不能在AnyObject
类型的对象上AnyObject
。 如果有任何读者可以在AnyObject
上创建扩展,请创建并通知我和社区。
同样在Int
, Float
和Double
等基本类型上,我们不能调用po()
因为它们的基类不是NSObject
。
因此,解决方案只是Type的另一扩展。
扩展Int
{
func po()
{
打印(个体经营)
}
}
对于Float
或Double
只需替换类型名称即可。
因此,您可以按以下方式实时使用它,
“试图打印” .po()//打印,试图打印
var someVal = 1234
“ the val = \(someVal)”。po()// val = 1234
var aDict = ..
aDict.po()//将输出字典的内容
var aView = ...
aView.po()//将打印UIView的描述及其框架
如您所知,
想象力是唯一的极限。
今天就这些。 尝试以任何可能的方式使用扩展名,不要忘了❤️并发表评论并分享您的想法。
下次,我将在这里与您联系并提供其他有趣的信息。 到那时,请喜欢这篇文章,并尝试与您的同事分享最新信息。
您可以通过ansarimawais@gmail.com与我联系。
访问我的网站以查看到目前为止我已创建的应用程序http://www.linklyapps.in/