Tag: Ios扩展

聪明地使用Swift扩展

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

简单文字动作扩展Swift 3

之所以如此,是因为我想为自己的一个应用构建共享扩展。 我碰巧也遇到了动作扩展,所以我决定首先在这些扩展上写一个不错的博客,然后再写一个关于共享扩展的博客。 动作扩展与共享扩展非常相似,因为它基本上是自己的小应用程序,可让您修改文本或图像等不同的数据。 例如,消除图片中的红眼,使文本更大且更易于阅读。 就创建这些而言,确实并不难。 我将其称为“添加时间段”,当单击活动视图控制器按钮时,它将出现。 第一步是在项目中实际创建操作扩展。 为此,请转到文件->新建->目标,然后选择操作扩展: 完成此操作后,您将在您的操作扩展程序的应用程序中看到一个新文件夹,其中包含其自己的故事板文件和视图控制器。 由于我希望该应用程序只能接受文本,因此我们必须进入info.plist文件,并将我们的NSExtensionActivationRule插入字典,然后将NSExtensionActivationSupportsText添加为值为YES的布尔类型。 您还可以在plist中更改Bundle显示名称。 这样做的原因是,捆绑包名称实际上是面向用户的名称,这意味着它将出现在活动视图控制器中。 首次创建动作扩展时,您会看到它提供了默认实现,在情节提要中带有imageView,并且在视图控制器中提供了能够处理图像的代码。 在我们的例子中,我们可以使用相同的代码,但是将其调整为处理文本而不是图像..最后,视图控制器将如下所示: 我不会在这里遍历所有代码,但是扩展的工作方式是它们与NSExtensionItems一起返回,我们要做的就是根据我们在系统中设置的内容检查它是否为kUTTypeText类型为String。 plist文件。 在此示例中,您可以看到我通过在结尾处简单地添加句点来更改字符串。 完好的功能只是将字符串转换回NSExtensionItem,然后返回给应用程序。 但是,这仅在您使用扩展程序的应用程序具有接受这些扩展程序的代码的情况下才有效。 我不确定应用接受这些应用的普遍性,但是到目前为止,这似乎并不是很标准的事情。 话虽如此,我建立了一个便笺应用程序,就像默认的iPhone便笺应用程序一样,并用代码编写了接受此操作扩展的代码。 为了使应用程序能够处理操作扩展,您需要在活动视图控制器上调用completionWithItemsHandler。 我在下面的Notes应用程序中包含了整个onShare函数的代码,该代码创建了活动视图控制器,然后创建了接受操作扩展的代码。