Tag: 编码

Swift风格指南:为什么要打扰?

您已决定编写样式指南。 为什么? 写原因的原因是什么,您如何说服团队成员遵循样式指南? 最近,我正在大型代码库中进行此过程。 我想提出一些合理的理由来推动它,而不只是预感它将使事情变得更好。 我得出的结论是,您实际上不需要样式指南。 但是,指南可以减少开发人员的认知负担。 它还具有使您的代码看起来整洁的漂亮副作用。 看到好处的最简单方法是类比英语。 首先是一个没有标点符号的块: 有大量的编码约定,有关大量示例和讨论的信息,请参见编码样式。常见的编码约定可能涵盖以下领域:注释约定缩进样式约定行长约定命名约定编程实践编程原则编程规则拇指编程风格约定 其次,一个带有标点符号的块: 有许多编码约定。 有关大量示例和讨论,请参见编码风格。 通用编码约定可能涵盖以下领域: *评论约定 *缩进样式约定 *行长约定 *命名约定 *编程习惯 *编程原理 *编程经验法则 *编程风格约定 这个简单的示例显示了一段文本上的格式差异。 它强调了样式指南的要点:必须使代码更清晰,以供开发人员阅读。 当我上大学时,我曾经使用在游戏编程中学到的技术来编写我认为很糟糕的作业。 诸如迭代数组指针而不是使用for循环之类的技术。 我最终为此受到了惩罚,因为我的主管发现代码难以理解并且不熟悉这些技术。 考虑到这样的普遍格言,即代码被读取的次数超过了编写的次数,我认为提高代码的清晰度很重要。 这意味着我们所有人都应尝试以相同的方式编写代码并以相同的方式设置其格式。 幸运的是,我们有Apple和Xcode在这里指导我们。 我们只需要遵循Apple的风格,并在Xcode中使用自动完成风格,我们将以成千上万的开发人员可以理解的方式进行编写。 如果这还不够的话,Realm还创建了出色的SwiftLint用于执行样式指南。 另外,Swift-Clean的工作人员还会进行调查,您可以在其中轻松生成样式指南,并将其与其他开发人员的答案进行比较。 那么样式指南是吗? 它们不是必需的,但是如果您重视所做的事情并希望使代码更好,那么这是提高项目整体质量的简单方法。 只是不要成为您的风格指南的奴隶,比如用英语写作时,有时我们会出现语法错误,而有时这些错误是更好的选择。

Tinkerblocks是最新的儿童编码应用程序

如果父母和教育专家都热衷于孩子们开始编程,那么应用程序商店中将会出现很多学习编码的应用程序。 但是……等一下,等一下,父母GOTO应该先选哪个? (老实说,我什至不知道GOTO在2017年是否仍然是编程命令。当然,我不会陷入1980年代……) 无论如何,本周有一个新的编码应用程序来自开发商Urbn Pockets,后者过去曾开发过一些有趣的儿童应用程序。 Tinkerblocks这个在教育方面加倍。 “有了Tinkerblocks,孩子们就可以通过一种可以触摸的简单编程语言来进行编码,”其App Store列表解释说-对不起,Android人士,目前这仅适用于iOS。 “我们设计了一种切实可行且易于遵循的编码方法,使任何人都可以通过设备的传感器,先进的可能性和您的想象力来创建出色的项目。” Urbn Pockets认为该应用程序将帮助孩子掌握命令,参数,功能,循环,条件,类型和错误消除。 这是一个拖放式系统,可以轻松创建迷你应用程序,从发出警报到拍摄自拍照。 我要说的一件事是,当您的孩子初次使用该应用程序时,它可能需要更多的手动操作:也许是一个指导他们逐步浏览各个代码块的教程。 就是说,与所有人一起进行试验以弄清楚什么也很有趣:对于孩子和父母来说,这可能是一个很好的应用程序。 Tinkerblocks在iPhone和iPad上的售价为1.99英镑,上面还贴了一组iMessage贴纸。

2019年学习iOS开发的5个最佳Udemy课程

今天,我想分享Udemy上排名前五的iOS开发课程。 这是我亲自上过的课程的精选清单,或者是 我的YouTube频道 社区里的伟人 所推荐的课程。 对于刚开始进行iOS开发的人员,我相信您会在此列表中找到适合您需要的内容,只要您投入工作,它将使您成为一位知识渊博的iOS开发人员。 披露:透明度对我很重要,因此我必须告诉大家所有该帖子包含会员链接。 请记住,这些只是基于我们经验的意见,可能不是您的最佳课程或指导。 可以在这里找到Udemy网站! 单击相应的标题直接进入课程。 1. iOS 12和Swift-完整的iOS应用程序开发训练营 我将学到什么? 能够构建您想要的任何应用程序 开创自己的基于应用的业务 通过担任自由iOS开发人员成为数字游牧民 掌握如何使用Apple的新ARKit2创建增强现实应用程序 标价: 200美元 授课教师:俞安琪 社会证明: 7,590条点评,4.7星,34,252名学生 样本审查: “本课程有很多实践练习,有助于确保我们理解所解释的概念。 解释非常好,并且与许多其他程序不同,我不觉得自己像在Angela所展示的XCode上那样简单地工作,而是要自己学习和试验。 我真的向愿意学习iOS开发的任何初学者推荐该课程!” 2.针对初学者的iOS 12和Swift 4.2:200多个动手教程 我将学到什么? 掌握从初学者到专家的iOS 12和Swift 4.2开发。 从头开始创建真实世界的应用程序并将其发布在App Store上。 设计外观精美且令用户满意的应用程序。 构建与Web服务通信并在线存储其数据的应用程序。 标价: 200美元 授课老师: Ray Wenderlich 社交证明: 125个评分,4.6星级,926名学生 样本评论: “ Ray Wenderlich的另一个很棒的课程。 我研究他的教程已有多年了。 他有一些很棒的课程和书籍,可以教您编程的来龙去脉以及成为一名出色的开发人员。 令人高兴的是,他如何分解所有内容,还给您带来一点挑战,可以完成工作,并降低专业开发人员的思考过程。 A ++类。 Def工作选择了Ray的任何课程,这是另一个很棒的课程。 […]

Swift中的三元条件运算符:有什么用?

开发人员熟悉三元运算符(或更确切地说是三元条件运算符)。 它不是特定于Swift的,而是许多编程语言中的基本运算符。 如何在Swift中使用它? 对于许多开发人员来说,“是这样还是那样?”,只要代码仍然可以编译并完成工作,这只是喜好和习惯的问题。 对我来说,这是一个有趣的问题,值得寻找答案。 首先,这是Swift.org上Ternary运算符的定义: 三元条件运算符是具有三部分的特殊运算符,其形式为question ? answer1 : answer2 question ? answer1 : answer2 。 这是根据question是对还是错来评估两个表达式之一的捷径。 如果question为真,它将评估answer1并返回其值; 否则,它评估answer2并返回其值。 三元运算符通过减少1个缩进级别来帮助使代码变平,因此有助于嵌套if -s来解决著名的厄运金字塔 。 例如,此代码 让持续时间:TimeIntervalif进度<0.2 { 持续时间= 1.0 }其他{ 持续时间= 2.0 } 可以通过使用此?:模式来以一种优雅的方式缩短 让持续时间:TimeInterval =进度<0.2? 1.0:2.0 整齐! 就个人而言,我喜欢在代码中使用此运算符。 每当需要分支时,我都想知道是否要使用三元运算符来实现。 但是,在某些情况下,我还是更喜欢 或switch 。 情况#1:当代码可读性受到损害时 三元运算符通常使代码更紧凑,但不应将其链接或嵌套。 我同意这样做时可以减少代码行,但那样可能会伤到你的眼睛(和其他人)🙂 假设我有一个名为BatteryLevel的枚举: 枚举BatteryLevel { 大小写无效 小写 案例中 情况高 } 现在,我要在其中添加一个初始化程序init(percentage: Int) […]

使用协议进行Swift类型推断

如果您来自Objective-c世界,那么您会欣赏Swift类型推断的,其中编译器会在编译时自动确定实例的类型,而无需显式编写类型。 这并不新鲜。 许多其他语言(例如C#和Kotlin)都具有此功能。 Swift的出色之处在于,您可以为自定义类获得相同的类型推断,从而部分地使您的代码更简洁。 制作URL的一种非常常见的方法是从字符串初始化。 符合ExpressibleByStringLiteral协议,该协议定义了具有关联类型的初始化程序。 我们可以扩展URL并确认协议。 在这里,您拥有它。 使用类型推断定义的URL对象实例。 结论 如您所见,进行自定义类型推断非常容易。 Swift几乎没有其他协议集合,可选协议等。 ExpressibleByArrayLiteral ExpressibleByDictionaryLiteral ExpressibleByIntegerLiteral ExpressibleByFloatLiteral ExpressibleByBooleanLiteral ExpressibleByNilLiteral ExpressibleByStringLiteral ExpressibleByExtendedGraphemeClusterLiteral ExpressibleByUnicodeScalarLiteral

iOS中整个应用程序中的“后退按钮事件”

但是,因为我们在Objective-C中使用类别向基类添加自定义方法,以使代码更短并使性能保持原样。 同样,我们可以在Swift中添加常见的IBOutlet和IBAction,这也将反映在情节提要或XIB的“连接检查器面板”中。 为此,我们必须创建一个空白的swift文件。 在Swift中,文件名并不重要,这与在Objective-C中进行“类别”时必须提供特定的文件名不同。 检查以下屏幕截图。 我创建了一个名为’Extensions.swift’的Swift文件,并在’UIViewController’扩展名中使用’IBAction’写回了按钮事件。 现在,您可以在情节提要ViewController及其各自的连接检查器中查看效果。 即使在特定类中对“ backPress”事件进行注释后,情节提要仍在接受backpress方法。 它来自扩展文件。 现在,您可以通过此操作映射后退按钮,并且可以得到相同的结果。 您无需在所有类中都编写backpress事件。 如您在“ Extensions.swift”类屏幕截图中所见,还有一个条件可以区分是显示还是推送。 因此,动作将自行决定要执行的操作,是关闭还是弹出viewcontroller。 有关使用Swift或Objective-C开发iOS的任何疑问,请立即与我们联系。 联系与应用 从以下链接下载此示例的完整源代码:http://bit.ly/iOS_AndApps_01

用户界面:查看LifeCycle Lab

带有learn.co的Swift课“ Swift和iOS简介” “骰子卷”应用 这是使用视图控制器进行编码的很好的练习。 目的是制作一个显示掷骰子结果的应用程序: 黑色正方形显示滚动结果(数字1表示1正方形,依此类推),底部标签显示以前的滚动。 红色=最近滚动。 我存储了我的IBOutlet变量,之后可以存储 类ViewController:UIViewController { 声明。 到模具按钮的IBAction连接是为我编写的,但我必须决定如何执行必要的操作。 覆盖func viewDidLoad(){ super.viewDidLoad() hideViews() 隐藏标签() } @IBAction func dieButtonTapped(_ sender:AnyObject){ 让theRoll = randomDiceRoll() updateLabelWithRoll(roll:theRoll) RearrangeDie(roll:theRoll) } hideViews()最初隐藏黑色正方形(模具上的点)。 “滚动”存储一个随机数1-6。 updateLabelWithRoll(roll:theRoll)滚动模具以更新每个标签的文本。 第一个滚动结果显示在最左侧的标签中,第二个结果显示在橙色标签中,依此类推。 RearrangeDie函数更新黑色视图方块以显示最新滚动的结果。 然后,我定义了以上功能。 我想知道是否没有更好的方法来编写updateLabelwithRoll函数。 我敢打赌,有一种方法可以将标签链接到字典,并使用for循环对其进行迭代。 对于标签中的我: 如果labels [i] == nil { 标签[i] = theRoll } 这是一个有限的应用程序,因为六次滚动后,无法继续记录滚动结果。 我不知道如何编程以在最左边的红色标签中显示最新结果,并且每次滚动结果时,结果都会被推到右侧的一个标签上。 看看是否可以添加以下修改将非常有趣: 重置按钮 赋予视图动画 将视图形状更改为圆形 对标签进行动画处理,以使每个卷向右移动。 添加压模声。 //返回一个随机的Int(1、2、3、4、5或6) […]

SmartBaby:JSON到Swift可编码模型

SmartBaby是一个Mac应用程序,可帮助您从JSON推断Swift Codable模型以节省时间。 如果您有一个响应为JSON的API,则可以使用SmartBaby节省大量时间来创建模型类型。 只需将JSON粘贴到SmartBaby,它将推断并生成Codable模型供您复制。 使用右侧的选项面板,您可以更改有关模型的一些元信息,甚至可以使用功能强大的地图来自定义生成的模型。 请注意,SmartBaby会将嵌套的JSON推断为嵌套模型。 另外,如果可以,SmartBaby将推断字符串为URL(或日期)。 您可以更改模型的名称,添加初始化程序,更改twitter的id的类型,使url为可选等等。 玩吧。 在左侧的列表面板中,您可以检查所有模型。 通过更改模型的“ 项目名称” ,您可以将它们与项目组进行组织。 如果模型太多,请按模型名称搜索以找到所需的模型。 您所有的模型都将通过CloudKit保存到私有数据库中的iCloud。 您几乎需要了解有关SmartBaby的所有信息。 您现在可以在Mac App Store上获得它。 https://itunes.apple.com/us/app/smartbaby/id1438971945?mt=12 您可以为它评分或在使用后对其进行评论。 🐣 如果喜欢,请推荐给您的同事或朋友。 🔥 欢迎反馈! Twitter:@nixzhu,电子邮件:zhuhongxu@gmail.com

了解如何从头开始开发自己的macOS应用程序!

您是否想学习如何开发自己的macOS应用程序,并以此为荣并在您的个人MacBook上使用它? 或者,也许您有激动的热情开始在Mac上进行开发? 然后,您来对地方了! 在这里,我将引导您完成使用最现代的语言之一Swift开发第一个非常macOS应用程序的步骤。 对编程有兴趣 对Swift编程有一些基本的了解(优势) 已安装Xcode 8.3.3 热情打造macOS应用 macOS开发的基本概念 如何将Alamofire与macOS应用程序集成以执行网络呼叫 如何创建拖放机制 一些Swift 3语法 我敢肯定,您很高兴知道我们将制造什么好东西! 在本教程中,我们将研究Mac的主要应用程序层Cocoa。 该层负责应用程序的外观和用户动作的响应能力,这也是我们将引入所有可视元素,网络和应用程序逻辑的地方。 我们会将图像上传到uploads.im,因为它提供了供我们使用的开放API。 完成整个教程后,这将是最终产品, 首先将向用户显示一个主屏幕,并显示“在此处拖放图像”的说明。 然后,用户可以将任何 jpg 格式的图像 拖动 到应用程序中,然后该应用程序将显示加载微调框,以通知用户它正在将图像上传到服务器。 服务器 成功 响应后 ,用户将获得一个弹出警报窗口,可以在其中 将URL复制到剪贴板 ,然后用户可以将URL粘贴到任何地方,例如在Internet浏览器上从服务器查看其图像。 聊够了,让我们开始吧! 首先,让我们启动Xcode 9并创建名为PushImage macOS应用项目。 在Application下选择macOS和Cocoa App 。 您可以按照我在下一页中输入的设置进行操作,然后为您的项目文件选择一个目录。 现在您已经完成了所有项目的设置,我想借此机会在Xcode 9中重构我最喜欢的一项新功能, 重构! 如果您使用过以前版本的Xcode,则无法重构Swift代码。 让我们试一试。 突出显示ViewController并转到Editor->Refactor 。 让我们将其更改为HomeViewController ,然后单击Rename 。 这将对您的filename , class name和Storyboard viewcontroller class […]

CA动画和组

每个人都喜欢动画,我认为每个应用程序都应该使用它们。 小心,但在以后的帖子中。 添加动画最简单的方法是使用UIView的animate方法或UIViewPropertyAnimator 。 非常简单易用,但是它们不支持对CALayer属性进行动画处理,例如borderColor或borderWidth 。 对于这些,我们有CABasicAnimation ,或者它的所有具体子类: CABasicAnimation , CAKeyframeAnimation , CAAnimationGroup或CATransition 。 在本文中,我们将快速介绍CABasicAnimation和CAAnimationGroup 。 假设我们要为视图的borderColor设置动画,这就是我们borderColor的方式: let borderColorAnimation = CABasicAnimation(keyPath: “borderColor”) // 1 borderColorAnimation.duration = 0.15 // 2 borderColorAnimation.fromValue = UIColor.red.cgColor // 3 borderColorAnimation.toValue = UIColor.blue.cgColor // 4 borderColorAnimation.timingFunction = CAMediaTimingFunction(name: .linear) // 5 borderColorAnimation.beginTime = CACurrentMediaTime() + 0.2 // 6 view.layer.add(borderColorAnimation, forKey: “blueBorderColorAnimation”) […]