Tag: iOS应用开发

可解码的JSON解析—迅速的爱情故事

这些天哪个应用程序不解析JSON数据(可能是基于Firebase的应用程序)。 通过所有展开和错误处理,对JSON响应的解码会变得非常激烈。 借助Decodable协议,Swift使得开发人员最常见的任务变得简单,只需几行。 可以从外部表示形式解码的类型-Apple 可以将JSON对象或属性列表中的任何数据解析为符合标准的Struct或Class ,而不会造成任何麻烦。 优点 易腐烂是标准的,因此更多的人会知道如何使用它们,它将流行起来 具有一些不错的枚举用法,有助于提高代码的可读性 较小的代码 花费更少的时间编写和修改代码 解码数据(JSON或任何其他属性列表)时,catch块完成的错误处理 缺点 您可以通过反射实现所有这些新功能。 必须为所有子类实现另一个必需的init 仅支持Swift 4及更高版本 在我看来,利弊大于利弊,Decodable是一个轻松的赢家。 我建议经常使用它。 现在最重要的是,如何使用它!

Swift中的NotificationCenter

通知分派机制,可将信息广播到注册的观察者。 资料来源 –苹果文件。 在开始这个话题之前,让我们看看为什么需要这个? 在移动应用程序开发中,有时我们要实现一些要求,例如面向处理程序,将数据从一个类传递到另一类,调用任何其他方法或函数。 以前我写过关于代理模式的文章 ,这是两个类进行交流的最佳方式,但是委派对于广播单打或同时通知方法是无济于事的。 这是有关NotificationCenter的一些优点- 从根本上说,它有助于观察和广播单身人士从一个班级到多个班级。 将单身人士从一个班级发布到多个班级。 接收来自多个班级的单身人士。 让我们看看如何使用它– 编写您的 NotificationCenter 进行观察:– 接收器📡 NotificationCenter .default 。 addObserver (自我, 选择器 :#selector( loginSuccess ), 名称 : NSNotification .Name ( “ com.user.login.success” ) , 对象 :无 这是接收的通知注册过程。 基于密钥, NotificationCenter可以观察。 在注册NotificationCenter进行观察的过程中– NotificationCenter.default这是通知变量,如果您有更多通知,则可以在您的类中全局创建它。 addObserver(self, — —这是我们要进行观察者通知的类。 selector: #selector(loginSuccess) —这是方法名称,只要通知将收到此方法调用即可。 name: NSNotification.Name(“com.user.login.success”) —这是通知密钥🔑,对于任何新的通知注册方法而言,它应该是唯一的。 对于调用相同的方法,它应该是相同的。 该键🔑只能调用与我们注册为键🔑并锁定🔐相同的方法。 object: nil) —在对象内部,您可以传递任何对象或任何变量值( […]

框架ve边界Karşılaştırması

Merhabaa, iOS programlamaörtrenirkeny irygulama vearasındakifakçokhoşumagittiğiicin buyazıyıyazmak istedim。 Ben bunu buradapaylaşayım,belki birilerinefaydasıolur😋 Ben buörnektekiSliderların最大帧数X坐标在genişliğine中,Y坐标yüksekliğine,Bounds X坐标在genisliğine中,Y icin de mor视图在yüksekliğine中。 Budeğerlerideğiştirerekfarklısonuçlarelde etmenizmümkün。 Okuduğunuziçinteşekkürler,yanlışaktardığımbir nokta varsa geridönüşyaparsanızsevinirim💁🏻

了解Git版本控制并学习如何在Xcode中使用它

每个人都会犯错,这是人类的一部分。 我敢肯定,每个读过这篇文章的人都会一次又一次在代码中犯了一个严重错误,并希望他们可以将项目恢复到一个小时前的方式。 像这样的错误就是为什么每个程序员都应该对所有项目都使用源代码控制。 不使用源代码控制与不备份计算机一样糟糕。 一次事故或数据丢失事件可能会损害您的整个项目。 源代码控制可帮助您返回项目的较早版本,以便您可以恢复丢失的数据或查看代码随时间的进度。 使用源代码管理时,与您的项目中的其他人进行协作也非常容易。 许多人会同意Git是最好的源代码控制形式,这对我们来说是幸运的,它是Xcode内置的! 常见的误解是GitHub和Git是同一件事。 这不是真的。 Git是在计算机上本地运行的源代码控制系统。 GitHub是一项在线服务,可让您将Git存储库存储在云中。 可以考虑使用iCloud Drive,但要提供代码,并具有更多功能。 随着Xcode 9的推出,Apple与GitHub合作,使开发人员可以轻松地在其应用程序中使用源代码控制。 在iOS项目中使用Git和GitHub不再需要使用命令行。 一切都内置在Xcode中! 在本教程中,我将向您展示Git的基础知识以及如何在Xcode中进行设置和使用。 我还将介绍如何连接您的GitHub帐户,以便您可以将代码存储在云中。 注意:本教程使用的功能仅在Xcode 9和更高版本中可用。 在继续操作之前,请确保Xcode是最新的。 在继续之前,您还应该在GitHub上拥有一个帐户。 由于我们在这里学习的是GitHub,而不是Swift,所以我使用的Xcode项目非常简单。 足以向您展示GitHub如何工作。 您可以在制作项目时继续学习,也可以随意使用自己的项目。 如果您使用自己的Xcode项目,请跳至How Git Works部分。 让我们开始一个项目! 打开Xcode,然后单击File and New Project 。 选择“ 单视图应用程序”,然后为您的项目命名。 我称其为Git Tutorial 。 将语言设置为Swift,我们将不需要此项目的核心数据,单元或UI测试。 现在这部分很重要! 在下一屏幕上,确保已选中“ 在Mac上创建Git存储库” 。 这将为您的项目目录初始化Git。 之后,点击创建 ,您就可以开始了! 因此,在继续使用GitHub和Xcode之前,让我们先谈谈Git的工作方式。 此图显示了Git存储库中文件可以处于的不同状态,以及可以在它们上使用的命令。 工作目录是您当前正在编辑文件的位置。 暂存区域是提交之前将文件添加到的区域。 此处的文件被视为“已暂存以提交”。 当您提交这些文件时,它们会被添加到本地存储库中。 […]

警报控制器的最佳实践🚨

嘿! 让我们美化警报控制器🤓。 我们将创建警报控制器,并尝试尽可能地对其进行清理。 让我们潜入 当我需要在我的应用程序中使用警报时 ,我便开始像以前一样创建警报 。 您可能对此很熟悉。 可以,但是如果您的应用需要多个警报,该怎么办? 🧐 答:复制并粘贴,更改字符串即可。感谢您再见👋🏻 是的,它将起作用work 但是,如果您的应用程序需要多个警报和DRY(请勿重复自己)代码,该怎么办? 嗯? 然后世界变了🙃 我们可以从创建一个函数开始,让我们尝试 现在,您可以在需要调用该警报时调用myAlertVC()方法,但是这里的问题是您无法更改将显示与myAlertVC()调用的警报相同的警报的字符串。 让我们向myAlertVC()函数添加一些功能,以便我们可以更改字符串。 这就是您如何调用此方法myAlertVC(title: “Hello!”, message: “Wazzup?”, actionTitle: “OK”) 真好! 每当需要显示新警报时,都可以调用此方法。 但是仍然不是最好的选择。 你只能叫它 在当前的ViewController上。 对于其他UIViewController子类,我们需要创建新函数,如上面的函数。 别忘了你不应该重复自己 因此,我们还需要诸如全局函数之类的东西,以便我们可以在任何UIViewController子类上调用它。 让我们尝试为警报创建一个新类 我们on vc: UIViewController参数on vc: UIViewController添加on vc: UIViewController参数,因为我们需要在调用此方法的视图控制器上显示它。 现在,您可以转到视图控制器并创建MyAlertController的实例 let myAlertController = MyAlertController() 现在您可以调用myAlertController的方法 好的,我们现在出发了,我们有警报控制器的特殊类。 同一类more上不再有代码垃圾。 让我们看看是否可以进一步删除一些代码并清理视图控制器。 我们可以删除字符串并在MyAlertController类上为每个警报创建函数 现在,您可以在我们的视图控制器上调用showErrorMessage(…)函数。 myAlertController.showErrorMessage(on: self) 凉! 从现在开始,您可以在任何UIViewController子类use上使用它。 […]

在Swift 4.2中验证textField输入的通用方法

为了创建通用验证类,我将使用可变参数,元组,正则表达式和枚举。 枚举是迅速开发人员的强大工具。 我们将从Alert,Valid,ValidationType,RegEx,AlertMessages的枚举开始。 现在,最后我们将做最后一个枚举,以返回验证失败消息。 现在,我们完成了使用枚举设置所有自定义参数类型的操作。 比赛结束了一半。 成为NFS Player,开始建立共享类进行验证,以加速完成比赛。 现在,我们完成了您的通用验证文件。 享受快乐编码🙂 仅需一秒钟,就可以通过两个示例快速了解如何使用此验证类。 拍手,如果您喜欢这篇文章并关注我… Github回购链接:-https://github.com/SandeepSpider811/ValidationExampleSwift 您可能感兴趣的其他文章: #iOS中的3D Toch Peek和Pop #动态的附件视图高度 #验证UITextField响应者的通用方法 #使用.xcconfig文件在Xcode Project中存储各种SDK密钥和ID。 #Xcode中的颜色资产(.xcassets)。

枚举与结构…

像保存属性和方法的类一样,枚举和结构也可以具有与之关联的方法。 这些类型在现代编程中非常方便。 枚举: 关键字枚举用于定义枚举数据类型。 枚举或枚举是一种数据类型,它允许您定义可能(相关)值的列表。 枚举名称应以大写字母开头(例如:枚举DaysofaWeek)。 枚举可以具有原始值或关联值。 我们将在以下两个步骤中进行介绍。 像类一样,枚举功能也可以通过确保标准协议功能来扩展。 具有原始值的枚举: 原始值可以是字符串,字符或任何整数或浮点数类型。 每个原始值在其枚举声明中必须唯一。 将整数用于原始值时,如果未为某些枚举成员指定任何值,则它们会自动递增。 如果为任何成员分配了任何原始值,则为其余成员分配的原始值将从该给定值开始增加。 使用init?(rawValue:)初始化程序从原始值创建一个枚举实例。 它返回与原始值匹配的枚举大小写或为nil。 具有关联值的枚举: 在以下示例中,尝试在不带切换大小写的情况下访问关联的值。 您会收到编译器错误! 我们可以在开关盒中访问它们。 差异:(来源:https://www.tutorialspoint.com/swift/swift_enumerations.htm) 结构(struct): 在快速编程中,结构是灵活的构建基块。 关键字“ struct”用于创建结构。 结构支持许多与类相同的行为,例如方法,初始化程序。 结构和类之间最重要的区别之一是,结构在代码中传递时始终会被复制,但是类是通过引用传递的。 这就是为什么我们只说结构是值类型,而类是引用类型。 当您创建一个结构实例,并将该实例传递给其他变量时,该结构被复制,最后将有两个结构对象。 如果与类相同,则该类实例的地址将被复制到第二个变量中。 如果您更改一个属性的任何值,则更改将反映在两个对象(属性)上。 如果使用结构,则更改仅发生一个实例。 与类的第二个不同之处是,结构会为其成员或属性提供默认的初始化程序。 甚至我们都可以在struct中编写我们的便捷初始化程序,以便更轻松地使用它们。 通过结构名称访问结构的成员。 注意(提示):如果我们在struct的扩展中编写我们的便捷初始化程序,则可以通过我们的便捷初始化程序或带有struct成员的默认初始化程序来初始化struct对象。

快速提示:组织

井井有条的项目可以节省开发人员数小时的挫败感和生产力损失。 没有组织项目的行业标准,但是我喜欢遵循一些最佳实践。 项目组织 在考虑项目结构时,请将相关的想法归为一组。 例如,您可能希望将所有网络代码或Core Data代码保持在一起。 您可以根据各种架构组件(例如视图,视图控制器和数据源)来组织事物。 只要有适当的逻辑系统,它并不重要。 这使新开发人员的入职变得容易,现有开发人员也可以更轻松地找到所需的内容。 请记住,文件(基本上)是免费的。 有时将大致相关的类保存在文件中可能会很方便,尤其是在早期原型制作过程中,Swift使其非常容易做到。 但是,以我的经验来看,这会增加您在文件内时正在考虑的事情的数量,并可能导致混乱和混乱。 将大型构想(类,结构,一阶函数等)拆分为它们自己的文件,有助于在尝试了解文件实际包含的内容时降低认知负担。 文件组织 在给定的文件中,还有一些方便的技巧可以使事情井井有条。 Natasha机器人的精彩文章使用Swift扩展“错误”的方式涵盖了我偏爱的组织方式。 对于类,结构和枚举,我们可以使用Swift的扩展功能将相关功能分组在一起。 当遵循协议时,这特别有用,因为您得到的内容如下所示: 扩展MyViewController:UICollectionViewDataSource { func numberOfSections(in collectionView:UICollectionView)-> Int {/ *…* /} func collectionView(_ collectionView:UICollectionView,numberOfItemsInSection部分:Int)-> Int {/ *…* /} func collectionView(_ collectionView:UICollectionView,cellForItemAt indexPath:IndexPath)-> UICollectionViewCell {/ *…* /} //注意:还保留其他集合视图数据源帮助程序 //方法也在这里! } 您也可以使用此系统将私人助手或便利方法组合在一起。 使用扩展进行组织的最终目标是以可视化的方式并提高可读性的方式将大型的逻辑代码块组合在一起。 要使这些逻辑块更加引人注目,请在它们上方添加// MARK: — ,以便它们出现在跳转栏中。 专业提示:使用// MARK: — + […]

了解您应该为应用程序了解哪些Apple App Analytics指标

更新:iTunes Connect App Analytics获得了新的数据点,这意味着您现在可以将基于应用程序的关键指标细分为诸如App Store搜索或App Store浏览之类的源类型。 在我们的新博客文章中了解有关此内容的更多信息。 2015年,Apple发布了Apple App Analytics。 该工具衡量您的应用在互动,广告系列,展示次数,销售,下载等方面的性能。其目的是向您展示人们如何找到您的应用,跟踪和衡量广告系列,检查用户的保留率并提供更多信息相关信息,可以帮助您制定应用营销计划。 要使用该平台很简单,您只需在iTunes Connect中具有“管理员”,“财务”或“销售”角色。 here在这里下载⚫ 当您开始使用App Analytics时,您可能会遇到一些非常重要的概念和定义,这些概念和定义对于您了解其含义以为您的应用程序制定完善的营销计划至关重要。 因此,这里简要概述了您可以在iTunes Connect App Analytics上找到的内容及其含义。 如果您希望一目了然地简要解释所有可用的应用程序指标,请下载免费的App Store Analytics备忘单。 下载免费备忘单 在概述部分中,您可以选择要分析的时段并查看关键指标的摘要。 在这里,您可以找到有关展示次数,页面浏览量,应用程序单位,应用程序内购买,销售,会话,活动设备以及安装应用程序的国家/地区的信息。 转换指标: “页面浏览量”与应用商店产品页面浏览量有关。“应用单位”是指您的应用首次下载的次数。“销售”是购买应用,应用捆绑销售和应用内购买的总和。“会话”基本上是您的应用的购买次数应用已使用至少2秒钟。 如果该应用程序在后台运行并且仅在以后使用,则将其视为新会话; 活动设备数是指在此期间内至少有一个活动会话的设备数。 在此部分中,您还可以查看每个国家/地区的最佳效果; 下一个标签是关于指标。 在此处,您可以查看所选期间的每日平均值,总展示次数和页面浏览量。 除此之外,您还可以查看销售指标,包括应用单位,应用内购买,销售和付费用户。 此选项卡的第三点是使用率指标。 这是允许与您共享信息的所有用户数据(选择加入)。 在此部分中,您可以检查安装,会话,活动设备,最近30天处于活动状态以及崩溃。 请记住,这些会话需要一段时间才能加载,因此您可能需要几天时间才能看到正确的数字。 此标签对于获取洞察力非常重要,例如一周中的哪一天最适合下载。 这是Apple App Analytics的第三个选项卡。 这是发现流量来源的最佳地点。 这是考虑在哪里做广告,哪种类型的广告系列是最好的,谁应该是您的合作伙伴的关键。 在热门广告系列部分,您可以查看特定广告系列的应用销售,使用情况和获利。 要访问此数据,您需要创建一个广告系列链接。 在“热门网站”部分中,您可以找到表明您的应用合适的用户的网站。 本节分析您的应用随着时间的使用情况。 它会跟踪用户首次安装您的应用的日期,该期间的活动设备数量,购买后的天数以及购买日期之后仍处于活动状态的设备的百分比。 您现在应该对Apple的App Analytics及其指标有了更好的了解。 但是,在专业水平上营销和优化应用程序时,应注意已定义的关键性能指标。 如果您想将先前显示的指标分解为可比较的指标,则可以使用以下一些想法。 找出您的整体转化率:您获得了多少次展示与安装次数的对比? 如果转换率太低,则应考虑改善应用商店的外观。 […]

使用LLDB调试Swift代码

作为工程师,我们将近70%的时间用于调试。 其余的20%会继续考虑架构方法+与队友进行交流,而实际上只有10%会继续编写代码。 调试就像是犯罪电影中的侦探一样,而您也是凶手。 —通过Twitter的Filipe Fortes 因此,使我们这70%的时间尽可能愉快是非常重要的。 LLDB进行了救援。 花式Xcode调试器用户界面显示所有可用信息,而无需键入单个LLDB命令。 但是,控制台仍然是我们工作流程的重要组成部分。 让我们分解一些最有用的LLDB技巧。 我个人每天使用它们进行调试。 LLDB是一个强大的工具,它内部包含许多有用的命令。 我不会全部描述。 我想向您介绍最有用的命令。 所以这是我们的计划: 探索变量值: expression , e , print , po , p 获取整体应用程序的状态+语言特定的命令: bugreport , frame , language 控制应用程序的执行流程: process , breakpoint , thread , watchpoint 荣誉奖: command , platform , gui 我还准备了有用的LLDB命令的图以及说明和示例。 如果需要,可以将其挂在Mac上方以记住这些命令🙂 命令: expression , e , print , po […]