Tag: Swift扩展

聪明地使用Swift扩展

对Swift来说是新手的开发人员,对于他们来说,扩展可能是一个新名词,所以我想与Swift扩展及其使用分享我的经验。 什么是扩展名? 扩展为现有的类,结构,枚举或协议类型添加了新功能。 -Apple Swift开发人员参考 快速扩展使您可以将行为添加到任何Type以及现有Type中 。 让我告诉你它是如何工作的。 快速扩展还有其他用途,可以提高代码的可读性。 它还可以帮助您使代码井井有条。 协议一致性 当我们需要确认一个或多个协议时,可以将其实现为该类的扩展。 这就是我们可以确认协议的方式。 我们可以将协议的所有功能放到扩展模块中。 会的。 我通常使用pragma标记来执行此操作,因为这样做是为了提高代码的可读性。 实用标记在跳转栏中添加视觉标记,有助于在文件内快速导航。 我们可以使用UITableViewDelegate , UITableDataSource , UIWebDelegates等预定义协议进行此操作 。我们可以分隔每个协议 带有单独的实用标记的确认,以便我们可以轻松地在文件中导航。 代码分离 这是将整个代码分成多个命名串的另一种方法。 我们仅收集具有共同或联合任务的行为组。 见图。 保留初始化程序 当我在需要在我的一个项目中保留结构的初始化程序时学会了这一技巧。 当我做到这一点时,我就像哇……扩展使我的生活变得很认真,很高兴与大家分享这一点。 让我举一个例子,这对您来说更有意义。 在上面的示例中,有一个名为Address的结构,其属性为houseNumber,city和state。 Swift提供了一个免费的初始化器,可用于实例化Address结构的对象。 对于Struct,我们有一个免费的初始化程序,用于初始化其所有属性(请参见上图中的蓝色部分) 如果我们需要自定义初始化程序怎么办? 在某些情况下可能需要自定义初始化程序。 因此,我们通常要做的是看一下。 我们添加了自定义初始化程序,就像我在上图中添加的一样。 现在我要讲的重点是不要失去您的注意力。 当我们添加这样的自定义初始化程序时,我们只是丢失了默认的初始化程序。 现在,我们只有定制的初始化程序来实例化Address结构的实例。 那么我们如何克服这个缺点呢? 是的,您是对的,Swift扩展可以解决此缺点。 当我们添加自定义初始化程序作为扩展时,会发生什么? 让我们看看 瞧,现在我们有了两个初始化器。 华友世纪🙂 摘要 Swift扩展使您可以向任何类,结构或枚举添加行为,即使您无权访问原始源代码(就像我们对UIColor所做的那样)。 还使我们能够以井井有条的方式来编写智能代码,使代码更整洁,更易读。 现在轮到您了,去玩扩展程序。 所以,伙计们,我已经分享了我在Swift扩展方面的经验,我仍在学习和探索更多的智能编码方法。 让我知道您的想法,欢迎提出建议。

保持UITextField可见性的扩展方法

这是不可避免的-您可以设计一个出色的UI,然后在模拟器或设备上运行它。 您点击一个文本字段,键盘从底部向上猛扑,您看不到正在输入的任何内容。 那里有处理这种情况的框架,还有一种使“自己滚动”的技术-这里还有另外一种收集方法。 扩展名 扩展是扩展类,结构,枚举和协议的好方法,无论您是否有权访问源代码。 这对于隔离协议实现的功能块(例如UITableViewDelegate,CLLocationDelegate)视图控制器实现非常有用。 我亲自采用了这种做法,作为保持源代码干净和可读的一种方法。 扩展在无法访问原始代码的情况下甚至更好。 例如,假设您希望添加wizbang功能,以在每次要使用此新的有尖齿的功能时都无需子类化,强制转换就可以转换代码中的任何String 。 扩展使此操作变得非常简单 入门 通常,如果我将扩展用于UITableDelegate之类的东西,则只需将扩展名添加到与UIViewController相同的源文件中。 当扩展更笼统并且将适用于所有UIViewControllers时,我将扩展代码添加到单独的文件中。 除了将texfield委托输出连接到视图控制器外,我们还需要在视图控制器类中添加两个方法。 这些方法使视图控制器可以根据视图控制器的生命周期为键盘事件注册和注销。 只需两行代码!

扩展👜

大家好,希望生活美好! 😁好吧,今天我想带来更多放松。 我每天都在使用这些扩展名,我想……为什么不共享? 水平摇动动画 结果 垂直摇动动画 结果 设置圆角 设置视图边框 产生眨眼般的效果 我刚刚通过更改视图的alpha属性制作了淡入淡出动画! 太基础了 💁🏻 结果 而且只有淡出才会像⬇️(基于上面的代码)。 我在这里没有给出详细的描述,因为所有内容都是不言自明的,希望您会发现它们很方便并且对您有所帮助🙌 让我们进行协作,使此存储库非常足智多谋,因此,如果您要添加一些东西,例如基本上扩展任何东西,请分叉它! 樱桃/扩展名 扩展-少数扩展使生活变得轻松! 🛀🏼 github.com 祝你有美好的一天️

可选类型的扩展

嘿大家! 我想写这篇简短的文章,因为我喜欢使用这种技术,它并不是最明显的实现。 因此,如果您在Swift中工作了2分钟以上,那么您可能已经看到Optional了 。 有很多很棒的文章解释了这些东西是什么以及如何使用它们。 我不会在这里讨论。 我想说的是恐惧 表达式从“字符串”隐式强制转换 去任何’ 每次尝试打印Optional时出现的错误。 好的,这不是世界上最重要的用例,但是如果没有它,您的代码将被警告打乱,或者每次执行此操作时都必须将所有内容转换为Any类型。 所以下面的实现: let val:字符串? =无 // … print(val)//警告在这里生成 会成为 let val:字符串? =无 // … print(val as Any) 如果您有很多这样的事情,或者如果val的类型发生变化,那么这将成为一场噩梦。 因此,什么是优雅的修复程序,因为它绝对没有使用String(describing: val) ,这是Xcode中建议的修复程序。 我很高兴你问😁。 为了解决这个问题,让我们在Optional类型上编写一个扩展名,是的,这是完全可能的,而且非常酷! 让我们开始编写以下代码: 扩展名可选,其中Wrapped ==字符串{} 在上一个代码块中,我们扩展了Optional类型,其中Wrapped类型是String 。 Wrapped属性是使用Optional声明(Swift Generics)声明的泛型类型的标识符。 这意味着我们在此扩展中编写的任何代码仅可用于可选的字符串类型( String? )。 因此,让我们实现我们的扩展。 在下一个代码块中,我们将添加一个名为valueOrEmpty的新属性。 这是代码: 扩展名可选,其中Wrapped ==字符串{ var valueOrEmpty:字符串{ 守卫让自己解开=自我否则{ 返回“” } 退回包装 } […]