Tag: 初学者

Swift中的可选项(使用方法)

本文旨在回答以下问题:在Swift中解开可选控件的最佳方法是什么? 为了回答这个问题,我们将探讨实际上是什么可选参数,以及Swift为何使用它们。 然后,我们将考虑几种方法,您可能希望以一致的样式在代码中将它们展开。 让我们首先确认我们对什么是可选的理解:可选实际上是Swift中的一种特殊类型 ,它在其中包装了其他类型。 为了说明这一点,请考虑以下事实:类型为String和String? 实际上是Swift中的两种不同类型。 需要说明的是: 字符串肯定会是初始化的字符串,另一方面,“ 字符串?”实际上是Optional ,这是一种特殊类型,需要对其进行“包装”才能使用。 如我们所见,“ Swift的类型系统通常在包装类型的名称后加上问号(?),而不是显示完整的类型名称”(参考编号:F)。 在表面上, Optional类型是具有两种情况的通用枚举:Optional.none和Optional.some(Wrapped),用于存储包装的值。 从本质上讲,然后Optional类型就像一个盒子 ,可以包含一个值,也可以不包含任何内容(零) 。 非常类似于经典游戏,一个人试图在一组洗过的杯子下面找到一个球,直到您真正提起其中一个杯子并在杯子下面看一下,在杯子下面是否会有东西并不清楚。 在尝试表示可能尚未为其分配值或不存在值的对象(即可能不存在值的情况)时,可以在Swift中使用可选选项。 Swift创建了这个包装对象,该包装对象可能包含一个值,以便我们能够“ 拆开 ”该可选对象以访问其包含的值,或者在这种情况下, 它可能根本不包含任何值 ,如果我们不明智地尝试要“强制拆开”该选装件,将出现错误并可能崩溃(参考编号:C)。 C语言或Objective-C语言均未使用可选选项“ Objective-C中最接近的东西是能够从原本会返回对象的方法中返回nil的能力, nil意味着“缺少有效的对象”。 ,这仅适用于对象,不适用于结构,基本C类型或枚举值。 对于这些类型,Objective-C方法通常返回一个特殊值(例如NSNotFound )以指示不存在值。 这种方法假定方法的调用者知道要测试的特殊值,并且记住要进行检查。 Swift的可选参数使您可以指示任何类型都根本没有值,而无需特殊常量”(参考编号:C)。 “使用可选参数类似于在Objective-C中对指针使用nil ,但是它们适用于任何类型,而不仅仅是类。 可选参数不仅比Objective-C中的nil指针更安全和更具表达力,而且它们是Swift最强大的功能的核心”(参考编号:G)。 因此,在Swift语言中添加可选选项的论点集中在以下事实:它们强制执行良好的编程习惯(它们迫使程序员编写更明确的代码),并允许在编译时进行更好的代码检查(参考编号:L)。 “可选是Swift统一虚无表示的方式。 通过使用它们,我们失去了零消息传递的便利性和灵活性,但是获得了编译时检查,安全性以及处理相同问题的一致方法,而不论变量类型如何(参考编号:N)。 因此,从上面的内容中我们了解到,由于Optionals是一种特殊类型,并且基本上包含一个值或不包含任何值,我们不能直接使用它们,所以我们必须将它们拆开 (就像小时候一样,与您的新动作人物形象在圣诞节时一起使用,而无需先将其拆开)。 因此,让我们探索一下如何在代码中完成: 为了安全地解开可选选项,Swift社区中一种普遍且广受欢迎的方法是使用如下if let语句: 使用这样的方法称为“ 可选绑定”,因为我们创建了一个新属性,尝试将给定可选内容分配给该属性,但是如果不能(在上述示例中),我们将失败到我们的else语句。 安全解包的另一种方法是使用guard语句,例如,我们可以创建一个采用take和optional的函数,并使用guard let语句检查是否在传递给函数的optional中是否有任何内容: 如果里面没有什么可选项仍然可以,因为我们的警卫声明会掩盖我们的后背: 阻止导致问题的可选选项的一种聪明方法是通过“ nil-coalescing运算符” 提供默认值 ,或者在设置var或使其等于某些可选值(可能为nil)时在“ ??”之后放置默认值: 因此,如果Optional包含nil而不是由值填充,则可以使用此运算符为以后在代码中使用的内容提供默认值。 […]

自学系列| iOS Swift | 第二课:介面开发(UIKit)第2部分

这篇文章承接第1部分 ,继续Udacity iOS App Nanodegree第二课的导读。 3.其他UI元素 UIImagePickerController 当App需要取用手机的相簿时,就可以使用UIImagePickerController让App跳出选择相片的画面,如左图。它需要遵循的Protocol有UIImagePickerControllerDelegate以及UINavigationControllerDelegate。 UIActivityViewController UIActivityViewController(如中图)经常在分享照片,或分享URL链接的时候,我们透过想要要分享的东西传到其他App上。 UIAlertController UIAlertController有某种形式,常见的有上右图那种从底下冒出来的选单,也有从萤幕中央跳出来的罢工(在左下图),它也可以结合UITextField构成简易的资料输入,例如下面右图。 4.多页画面 UINavigationController / UITabBarController 画面上方的是NavigationController,我们在第一课有使用过(可以看这篇),通常左边的按钮负责回到前一页,右边的按钮则可以实作不同需求,像是分享,跳出选单…等等。画面下方的是TabBarController,用于在不同页面之间切换。详细的实作Udacity课程影片讲了很多,这边就不多说了。 学完第二课,我们已经熟悉UIKit当中最常见的几个元素, 包含几乎所有App都会用到的UITableView,UICollectionView,可以在多页面之间转换的UINavigationController,UITabBarController,还有一些小工具如用来输入文字的UITextField,使用挑照片的UIImagePickerController,会跳出选单或警示的UIAlertController。 还有最最重要的 准备好前往下一课了吗? 第三堂课:网路资料传输处理(网路) 第四堂课:手机上的资料储存(核心资料) 第五堂课:从发想到上架的方法论 如果喜欢这样的自学系列,请帮我拍拍手👏另外,我把之前写的程序学习相关文章集结在底下的列表,有闲来坐🤗 艺一网—文章列表 我们的【学程序&软体创业】学习之路 medium.com

面向绝对初学者的软件开发摘要

如果您是软件开发生态系统的初学者,那么您迫不及待想要开始开发Badass Web应用程序,移动或桌面应用程序。 也许您在确定以哪种编程语言或平台开始时遇到问题。 我应该从Web应用程序还是移动应用程序开始? 如果是移动设备,我应该针对Android,IOS或Windows设备进行构建吗? 还是我应该全部学习? 我应该学习哪种编程语言? 哪一个是什么? 您在线阅读的语言越多,就越会感到语言困惑。 我完全理解你的困境,而你并不孤单。 撰写本文的目的是为您大致了解技术行业,现有平台(Web,移动和桌面,{Android,Windows和IOS}),构建所需的工具和编程语言。每个平台。 我将尽可能简单地讲一些技术术语。 网络应用程序 : 首先,您需要一台PC(个人计算机),浏览器(Chrome,Firefox,Edge等)和一个文本编辑器(记事本,Sublime Text,Visual Studio Code等)。 Web开发可以分为前端和后端 前端 :这是Web应用程序的可见部分,手势和感觉。 专门从事前端开发的人称为前端开发人员(或网页设计师)。 我需要知道什么语言? · HTML (超文本标记语言):HTML是标记语言,而不是编程语言。 它是每个Web应用程序的构建块,因为没有Web应用程序就无法存在。 就像在没有基础的情况下盖房子一样。 ! HTML是每个Web应用程序的基础。 · CSS (级联样式表):如果HTML是Web应用程序的构建块和基础,则CSS使HMTL更加美观。 想象一下一个没有油漆的房子,这就是没有CSS时HTML的外观。 CSS负责颜色,文本大小,动画,响应能力等等。 · JavaScript :它可以处理Web应用程序的交互性,例如验证,高级动画,DOM操作。 后端 :这是最终用户看不到的部分。 它涉及从用户获取输入到数据库并向用户提供反馈。 一个很好的例子是登录过程。 用户输入他/她的电子邮件/用户名和密码。 这将接受输入并验证用户的信息在数据库中是否可用,如果可用,则将用户重定向到特定页面,如果没有,则向用户提供未经授权的消息作为反馈。 构建后端体系结构的人称为后端开发人员 。 同时执行后端和前端的人称为Full Stack开发人员 。 我需要知道什么语言? 基本上有不同的Web后端编程语言。 · PHP , Python […]

Swift初始化程序入门指南-第一部分

根据swift的文档进行的初始化“是准备使用的类,结构或枚举实例的过程,” “初始化程序确保使用前正确设置了类或结构类型的实例” 如果您来自任何其他面向对象的编程语言,那么您可能熟悉构造函数,在Swift中也称为初始化器。 对于Swift中的初始化程序,要遵循一些特定的规则,这些规则不容易改变。 这是一些适用于结构和类的规则。 –在创建类或结构的实例时,所有存储的属性必须具有初始值 –在初始化期间设置初始值不会触发属性观察器(willSet,didSet) –由于默认值为nil,因此可选参数具有初始值不是强制性的 –您只能在初始化期间将值设置为常量属性 –如果您想利用成员初始化器和自定义初始化器的优势,则必须使用扩展名来定义自定义初始化器(稍后说明) 注意: Swift将为初始化器中的每个参数自动提供参数标签,但是,如果您不希望在初始化器中使用参数标签,则可以使用下划线(_)覆盖它们 在这一部分中,我们将研究Struct Initializers(Memberwise),在第二部分中,将研究类的初始化器。 考虑以下结构: 当添加自己的自定义初始化程序时,您将失去Swift隐式为您创建的成员初始化程序,如下所示: 但是,使用扩展名可以解决丢失成员初始化程序的问题 在第二部分中,我们将探讨类类型的初始化程序,我们将从简单的概念开始,逐步向更高级的概念过渡 学分: SWIFT编程语言手册 您可以通过在Twitter上关注我或查看我的github帐户来找到有关我的更多信息

Swift入门

您是iOS的新手。 您想将脚趾伸入iOS开发令人兴奋的世界。 但是,当您进行窥视时,会遇到作为Objective-C的大灰狼。 不用担心,Swift可以节省时间。 当我第一次进入iOS时,我是一个新手,只有三个月的Python编程经验。 我很害怕这么快做出这种转变对我意味着什么。 但是,一旦我进入了Swift,我就陷入了爱河。 我发现它仍然很容易阅读,但同时又拥有使一种语言令人兴奋使用的Pizzazz。 另一方面,由于Objective-C的总体构造方式,它被证明具有一定的学习曲线。 让我们比较一个示例Objective-C类和一个Swift类。 目标C 用Objective-C编写类可能有些艰巨。 这是因为Objective-C需要每个类的实现文件和头文件。 头文件(.h) #import @ class ThisTest; @ interface ThisTest:NSObject @ 属性 (非原子)NSString * objectiveCString;-( void )someMethod; @ end 实施(.m)文件 #import“ ThisTest.h” @ 实现 ThisTest NSString * objectiveCString = @“ some string”;-( void )someMethod { NSLog (@“这是打印方式”);} @ end 当我刚开始的时候,我觉得这很吓人。 当我最终着迷于协调变量和方法的命名,弄清楚什么去哪里以及整个导入业务时,它也被证明很忙。 迅速 使用Swift,我意识到我可以将所有内容都放在一个文件中,而将更多的精力放在逻辑上。 我所要做的就是找到一种创建将功能分组在一起的类的方法。 […]

Swift —可选的初始化

因此,您正在尝试使用可选常量创建自己的类吗? 谜 如果您是像我这样的Swift菜鸟,那么第一次尝试在类中使用一些Optional类型常量创建Swift类时,就会遇到此错误。 现在,您可能会说:“等等,我从未遇到此错误,因为我总是像所有理智的人一样初始化所有的类属性。” 啊哈! 我亲爱的想象中的理想程序员,最初的挫败感是这样的。 在Swift中必须启动其他所有类型的原因是,否则它们将具有nil值。 但是,Swift中的Optional类型可以为nil 值,我们在代码中按原样处理它们。 因此,我的推论是,Swift中的Optional类型应该可用而无需初始化。 另外,如果您使用可选类型变量而不是可选类型常量 ,则代码将完美编译,如下所示。 那么这是怎么回事? Swift为什么让我们使用未初始化的Optional类型变量而不是常量? 处理Optional类型时,Swift变量和Swift常量之间有什么区别? 揭示 变量和常量之间存在差异的原因是,Swift 变量可以隐式处理显式设置的值,而Swift 常量 每次都需要显式设置其值。 Swift中的每个类型(例如String,Int,Bool等), 除了Optional之外,都具有显式的 .None值。 但是Swift中的Optional类型具有隐式 .None值。 这意味着,对于Swift中的任何变量或常量(Optional除外),该值将显式设置为.None ( nil )。 但是,对于Swift中的任何Optional变量或常量,该值均隐含为 .None ( nil ),即,该值可以为nil但并不总是nil 。 现在,如上所述,Swift中的变量知道如何处理值的显式和隐式分配。 因此,一个类变量可以从Optional类型推断其初始值,即.None 。 但是, 常量不知道如何处理隐式值,因此无法从Optional类型推断出它的初始值(需要明确地说,“这是您的初始值”)。 结论 Swift中的类变量无需初始化即可处理Optional类型(因为它们可以处理隐式.None值),但是Optional类型的类常量将始终必须被初始化(因为它们无法处理隐式.None值,并且需要显式设置一个值)。 本文是在以下资源的帮助下撰写的: Swift可选的初始化 感谢您为Stack Overflow提供答案! 请务必回答问题。 提供详细信息并分享… stackoverflow.com 是nil和Optional。在Swift中没有相同的东西吗? 感谢您为Stack Overflow提供答案! 请务必回答问题。 提供详细信息并分享… stackoverflow.com

如何开始iOS开发

所以您终于做到了。 您决定研究iOS开发。 从热情上讲,您想创建自己的第一个价值数百万美元的应用程序,但是很快就会被大量的学习内容和学习资源所淹没。 在接下来的几行中,我将为您提供刚开始时希望了解的所有基础知识。 尽管我认为您是编程的完整入门者,但该文章对其他领域的开发人员也有帮助。 程式语言 首先,我建议开始为编程打下坚实的基础。 而不是直接进入它,而是从各个来源复制粘贴糟糕的代码,甚至根本不了解任何事情,只是要注意,开发出价值一百万美元的应用程序并不是一件容易的事。 有关如何解决问题的简单概念将为您提供更多帮助。 应用于iOS开发,这意味着要了解Swift。 这是苹果公司开发的一种开放源代码编程语言,用于取代其更老的语言Objective-C。 在2014年之前,Objective-C是编写iOS应用程序的唯一官方方法。 尽管Objective-C仍然是一件很重要的事情,尤其是在具有大量旧代码的大型应用程序中,但我认为几年后苹果将开始弃用对它的支持。 这意味着,即使有,您也只能阅读/理解用Objective-C编写的代码。 因此,从Swift开始是必经之路。 在本文的底部,我将添加一些有关如何开始使用编程语言的链接。 开发环境 Swift具有开源的优势,已经部分支持在Linux等其他平台上运行,将来还会有更多支持。 另一方面,iOS开发依赖于只能在macOS(Apple的操作系统)上运行的多种工具。 我认为这不会很快改变,因为几乎所有用于构建iOS应用程序的工具都是封闭的,并且因为苹果通过Mac的销售赚了很多钱。 基本上,您只有一个选择:购买Mac。 但是,如前所述,我建议无论如何都要开始学习Swift,您可以在任何现代计算机上使用Docker和Visual Studio Code之类的工具来进行学习,看看是否愿意花时间和金钱来进行投资。 工具类 说到工具,一旦您决定通过使用macOS来实现编写iOS应用的梦想,那么该考虑一下构建自己的应用所需要的时间了。 您将在大部分时间花费的东西称为Xcode。 Xcode是一个IDE,基本上是一个具有许多高级功能的代码编辑器。 一开始就不必太担心这些,因为您会尽快了解最重要的那些。 您将很高兴使用的另一个工具是终端。 不要害羞地玩它。 我知道没有图形界面的工作起初可能令人生畏,但与此同时,它开放的可能性是无限的。 我建议先进入一些基本命令来切换目录,复制文件等。我认为,最好尽快了解版本控制系统Git,因为它是每个软件的核心开发项目。 你呢? 您是否已经开始学习Swift或iOS开发? 您使用了什么方法,一开始就做了什么? 为了结束这篇简短的文章,这里有一些指向我提到的最重要内容的链接: 官方Swift书(也可在iBooks中获得) Swift和Xcode学习资源概述 学习Git

开始Swift编程第1部分-变量,常量和类型

我知道那里有很多教程,Apple有很多学习Swift的资源,包括他们的WWDC视频(即使较旧的视频仍然有用,所以不要害怕几年前的视频)。 保罗·哈德森(Paul Hudson)的系列文章“用Swift入侵”非常适合概念学习,而他的系列文章就是我的入门方式。 Ray Wenderlich也提供了一些非常深入的教程,但是大多数教程都要求您在到达API之前就具有一定的知识。 我依靠Ray Wenderlich一次过。 最后,我找到了Cocoacasts,以获取有关核心数据的信息。 我想每两天在这个系列中创建一个新的部分。 根据主题所涉及的内容,可能需要更多时间来编写。 本教程与众不同 许多教程向您展示了如何做某事,几乎没有解释为什么您以某种方式做某事。 我的目标是教您如何尽我所能,以及增加社区反馈。 许多教程一次将所有内容都扔给您,我计划详细介绍该主题。 您会慢慢学习,但是到完成每个部分时,我希望我能够比在其他地方阅读相同内容所能教给您的更多。 本教程是什么 本教程的设计方式是,您将学习Swift编程的基础知识。 我将教的很多东西都可以转移到其他语言,但是所有语法都是用Swift编写的,使用相同语法的里程可能会有所不同。 虽然本教程并非旨在教您如何制作您的第一个应用程序(请参见下文),但它会教您一次又一次地用于制作第一个应用程序的基本构建基块。 本教程不是什么 本教程不会教您如何使用Xcode或如何制作第一个移动应用程序。 我不会讲授如何构建用户界面,使用自动布局,如何使用“在此处插入框架”或iOS中使用的各种文件类型。 也许将来,我会写一些系列文章,深入探讨其他主题,但是目前,我的唯一目标是教授语言以及事物与语言的关系。 系列目标 整个系列的目的不是要推出另一个几乎一无所知的程序员,而是要教新的程序员真正的编程。 从课堂和实践的角度,使读者对程序设计有一个更好的理解。 使新程序员更好地理解概念,这些概念将通过面试和整个职业生涯为他们提供帮助。