在本教程中,您将学习如何在MacBook中安装Xcode。 来源:iosDevelopers.org->在此处阅读原始内容 什么是XCODE? Xcode是macOS的集成开发环境,其中包含Apple开发的一套软件开发工具,用于为macOS,iOS,watchOS和tvOS开发软件。 这是开发Apple应用程序所需的唯一软件。 在本完整的iOS开发课程中,您将仅使用此软件。 XCODE是您的武器。 XCode不仅支持Swift,还支持其他编程语言,例如C,C ++,Objective-C,Objective-C ++,Java,AppleScript,Python,Ruby,ResEdit等。 XCODE的费用是多少? 作为Apple开发人员,您不会经常听到这个词,但是Xcode是免费的。 因此,现在您无需花一分钱就可以继续学习。 但是,是的,在学习了基础知识之后,如果您想将应用程序上载到appstore,则需要一个开发者帐户,该帐户的费用为$ 99。 我们将在稍后讨论。 现在,您可以继续使用它。 如何安装XCODE? 您需要按照以下步骤在MAC中安装Xcode:- 检查您的MAC版本。转到屏幕左上方的Apple图标,然后单击Cick-> About this MAC。 现在,您可以看到您的MAC版本。 Xcode 8的最低系统要求为OS X 10.11.5或更高版本(El Capitan),或者理想情况下,您应该运行macOS Sierra(10.12)。 如果您仍在运行早期的操作系统,则需要立即更新操作系统。 2.在您的MAC上打开Appstore。 3.搜索XCODE。 4.单击Xcode下方的GET按钮,然后等待其安装。 大约大小为4.8GB,因此如果您仍在使用2G,则可能需要一些时间(当然不是我) 5.安装完成后,单击应用程序中的XCODE图标并启动它。 6.轰! 您已准备好摇滚。 现在,您已经在MAC上成功安装了Xcode,并且所有设置均可用于启动Swift。 因此,让我们进入下一章。 到时候那里见 注意:我们在第1章中讨论了Swift的一些基础知识。如果您错过了该章,请在这里阅读:单击此处获得第1章。 如果您喜欢我的教程,并且想学习iOS和Swift,请访问我的博客www.iosdevelopers.org 现在,Namaste! 🙂
众所周知,软件开发是当今世界的热门行业。 不断进行的技术创新和研究在软件开发领域创造了苛刻的大量工作。 每个月,大约有4000万人访问Stack Overflow(最大的程序员在线社区)以学习,共享和提高他们的软件开发技能。 根据Stack Overflow的统计,在这4000万人口中,有1680万人是专业开发人员和大学水平的学生。 根据全球每年超过64000名开发人员进行的年度Stack Overflow的2017年开发人员调查,移动应用程序开发人员占全职软件开发职位的23%。 在23%的移动应用程序软件开发职位中,有57.6%的人是iOS开发人员,他们为iOS,macOS,tvOS和watchOS开发应用程序,如下所示。 对iOS开发人员的需求背后的主要原因是其操作系统竞争性消费者在几乎每个国家/地区的市场份额。 例如,在美国最大的智能手机市场中,iOS销售额从37.1%增长到43.5%,这导致其他平台在1年内下降。 如下所示,在澳大利亚,英国,法国,意大利,西班牙和日本也观察到了相同的趋势。 这些因素导致开发人员对Objective-C和Swift(用于iOS开发的编程语言)的需求,使其始终如一地出现在TIOBE的图表上。TIOBE是一个索引,每个月都会发布流行的编程语言列表。 (在此处了解有关TIOBE的更多信息: https ://www.tiobe.com/tiobe-index/ ) 可以说,这些统计数据足以预测,未来几年对iOS工程师的需求也会增加。 但是,真正棘手且值得商bat的问题是选择Objective-C(成熟而又被通缉)还是Swift(轻松又新鲜)。 我认为,这取决于许多因素,因此建议使用iOS语言选择器确定下一个iOS应用程序的语言。 选择语言时要注意的关键是Swift是一种新语言,因此非常易变。 结果,将有很多更新可能破坏您的代码,并且免费资源也将受到限制。 因此,大型公司尚未切换到Swift。 但是为什么要学习Swift? 嗯,苹果正在推动Swift成为主要语言,并且可能在未来几年内,苹果将弃用Objective-C,这将增加对工具箱中配备Swift的工程师的需求。 因此,建议您跳入Swift,这既适用于老Objective-C熟练的开发人员,也适用于那些希望从iOS开发开始的人员。 为此,我创建了推荐的学习Swift的学习指南。 也将此酷技能添加到您的个人资料。 首先,您需要一台具有最新MacOS和Xcode的Apple机器。 之后,您可以依靠以下入围资源抢先一步。 1.苹果指南: 在这里,您将找到有关Swift的所有信息: https : //developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html 在这里,您将找到一个实际的案例,每节课都将逐步指导您创建一个简单,真实的iOS应用程序。 https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/index.html#//apple_ref/doc/uid/TP40015214-CH2-SW1 有关全面的Xcode教程,请访问http://help.apple.com/xcode/mac/8.0/#/ 大量阅读,但它解释了所有内容! 2.斯坦福大学讲座: https://itunes.apple.com/in/course/developing-ios-10-apps-swift/id1198467120 很受欢迎,很好! 3. Raywenderlich.com教程: 查阅Swift一节,他们有各种基本的免费指南。 4. Udacity: 您还可以找到有关Udacity的各种免费课程。 https://www.udacity.com/course/swift-for-beginners–ud1022 https://www.udacity.com/course/swift-for-developers–ud1025 https://www.udacity.com/course/learn-swift-programming-syntax–ud902 5.来自Artsy的Swift视频课程: 在这里,您可以找到适合初学者的视频课程。 http://goo.gl/MegYAU http://goo.gl/WJLDbp […]
Swift支持大多数标准运算符和其他编程语言使用。 此外,Swift可提高使用这些运算符时的安全性。 所有标准运算符均分为3种类型。 他们是: 一元运算符:一元运算符可用于单个操作数。 它可以放在操作数前面(前缀),也可以放在操作数后面(后缀)。 前缀一元运算符的示例是-variable1 , -10和!variable2 。 后缀一元运算符的示例为variable3! 二进制运算符:二进制运算符在2个操作数之间工作。 二进制运算符的示例是a + b,c / d和e * f 三元运算符:三元运算符使用3个操作数。 Swift中只有一个三元运算符; 它是三元条件运算符(a?b:c) 在语句1 + 2中,加号是运算符 ,数字是操作数 。 赋值运算符 最常见和最基本的运算符是赋值运算符。 基本语法如下: = 例: var sampleNumber1 = 0 sampleNumber1 = 256 让sampleNumber2 = 242 sampleNumber1 = sampleNumber2 打印(sampleNumber2) 对于元组,我们可以一次将多个值分配给多个变量/常量。 例: 令(a,b,c)=(12,2.78,“测试”) 一种 b C 赋值运算符不返回值 与其他编程语言不同, Swift赋值运算符不返回数字或布尔值 […]
Optionals是一个后缀运算符,可以附加到任何数据类型。 可选项目以问号( ? )表示。 我们使用可选参数来指示变量所分配给的数据类型可以不包含任何值。 我们使用关键字( nil )分配一个没有值的可选内容。 只有声明为可选变量的变量才能分配nil值。 我们在某些情况下声明了可选变量,在这种情况下我们不知道输入源是否包含数据。 可选选项使程序更安全地进行编码。 例如,声明为( Int? )的变量; 告诉系统该变量可能没有任何值。 我们可以测试变量是否有值,如果有值,可以从变量中解包值。 用于指示或声明可选选项的语法如下: ? 例如,要声明一个可选变量,我们执行以下操作: var someOptional1:Int? var someOptional2:String? var someOptional3:Double? var someOptional4:Bool?someOptional1 someOptional2 someOptional3 someOptional4 请注意,在声明可选变量时,我们不需要初始化变量,因为可选变量数据类型变量会自动初始化为无值或nil。 但是, 自动初始化仅适用于变量,不适用于常量。 我们可以使用值设置可选选项,如果程序需要设置为nil,则将它们重置为nil。 例: //从先前的代码继续 someOptional1 = 766 someOptional3 = 7123.98 someOptional4 = falsesomeOptional1 =无 someOptional4 = nilsomeOptional1 someOptional2 someOptional3 someOptional4 请注意,在Objective C中找不到可选参数。尽管我们可以在Objective-C中将对象设置为nil,但在Objective-C中,nil指向空指针,而在Swift中,我们可以将任何数据类型设置为可选参数。 我们还可以同时声明和分配可选内容。 […]
Swift带有可选和非可选变量的新概念。 在回答为什么是可选的? ,您需要快速了解什么是可选的? var someOptionalString:字符串? // 可选的 var nonOptionString:String =“ 123” //非可选 那是? 在声明中意味着什么? 好吧,这是一种快速声明可选变量的方法。 好。 但是,这是什么可选内容? 可选的是一种表示变量中是否有值或什么都不表示(即没有值)的方法。 从上面的代码, someOptionalString可选变量,我们可以得出结论,它可以包含一些字符串值,也可以根本不包含任何字符串值。 迅速地, nil是一个特殊值,表示没有值。 因此, someOptionalString可以包含字符串值,也可以为nil 。 好。 到目前为止很清楚。 但是为什么是可选的 ? 让我用示例解释一下: -(NSString *)getFormattedPhone:(NSString *)phone { 如果(phone.length == 10){ NSString * countryCode =“ +91” 返回[NSString stringWithFormat:@”%@-%@”,countryCode,电话] } 返回零; } NSString * formattedPhone = [self getFormattedPhone:@” 2233231341223“]; //返回nil […]
我最近创建了一些按月划分的表视图。 这就是我按照对象的date属性对它们进行分组的方式。 我们将使用Doctor Who剧集演示该功能。 这是一种按日期对事件进行分组的方法: 我们使用reduce(into:)将我们的情节数组转换为以日期为键的情节字典。 在此示例中,当月播放的剧集将被分组在一起。 对于每个情节,我们从播出日期的年和月部分创建日期。 我们将当前情节追加到现有数组或空数组中,并将其设置为该日期键处的字典值。 不好意思的解释是抱歉,这篇文章更多地是关于算法的发展,而不是算法的细节。 😅 我们可以将此代码提取到一个函数中: 现在将这些情节归类如下: 让分组= groupedEpisodesByMonth(episodes) 我们可以采取几个步骤,使该方法可用于带有日期的任何模型对象。 首先,我们将创建一个带Dated协议。 然后,我们的函数将接受实现我们协议的任何内容,而不是接受Episode 。 基本上,我们只是将Episode类型替换为Dated 。 现在,我们的呼叫站点如下所示: 让分组= groupedByMonth(episodes) 差别不大,但现在我们可以使用date属性对任何内容进行分组。 我采取了一些额外的步骤来使它看起来更“快捷”。我没有将其保留为函数,而是在Array上创建了扩展名,并参数化了将要分组的日期组件(因此您可以按天分组,或年份等)。 让分组=情节.groupedBy([。year,.month]) 通过用常见情况的枚举来表示日期部分,我们可以使使用起来更加容易。 让分组=情节.groupedBy(.month) 但是我认为我所拥有的足以满足我的需求。 ☺️ 将我们的数据按这种方式分组后,将其以表格视图的形式呈现相对来说比较简单,但是我会再保留一天。 谢谢阅读。 🤲
关键字“协议”用于快速声明协议。 所有类,枚举和结构都可以采用该协议。 协议定义了适合特定任务或功能的方法,属性和其他要求的蓝图。 然后,该协议可以由类,结构或枚举采用,以提供这些要求的实际实现。 满足协议要求的任何类型都被称为符合该协议。 协议在面向协议的编程中被大量使用。 您在协议中声明的所有属性都必须是 { get}或{get set}。 get类型提供了更大的灵活性,我们稍后可以在诸如“ let”或“ var”类型的对象中定义它们。 像OOP一样,我们可以继承/确认另一个协议。 但是在OOP中,我们只能从一个类继承。 也就是说,我们可以有很多子类,但一个类一次只能包含一个父类。 如果您继承一个类,则有时会从父类获取所有API,而有时我们并不需要全部。 在POP(面向协议的编程)中,我们可以一次确认具有多种协议的对象。 这样,我们可以根据需要制定任意数量的协议,然后无论需要什么协议,这些都可以由我们的对象确认。 这提供了很大的灵活性。 合理? 别担心! 我很快会对此做出更多解释! 在以下示例中,我们在集合中使用了两种对象,即类和结构,并将其传递给tableview数据源。 我们可以在函数名称之前使用Mutating关键字,以更改确认对象中的属性(值)。 如果您注意到,在类对象中,我们不需要使用“变异”,因为类对象方法具有预定义的功能来更改其变量。 但是像struct这样的对象是基于值的,因此要更改其属性,我们需要在试图更改其自身对象中的值的函数之前保留“ mutating”关键字。 我们可以在协议中使用初始化程序,以一种简单的方式初始化已确认的对象。 在以下示例中,我们创建了一个对Currency都确认的所有加密货币的集合。 但是集合元素无法访问“货币”协议之外的外部功能或属性。 例如,无法从View Controller中的“ currencies”数组访问CryptoCoin类的“ creatorName ”属性。 我们对现有类型使用“ extension ”关键字,以在POP中添加诸如函数定义和计算属性之类的功能,如果我们在继承对象中需要相同的函数定义(不是全部,而是大多数),该怎么办。 然后我们可以扩展协议,然后在该扩展中定义功能。 然后,无论什么对象需要该功能,都可以确认该协议的那些对象。 如果您愿意,可以在某些子对象中覆盖该func定义。 例子: 我们可以使用扩展将协议一致性添加到现有类型中,您可以在项目中的某些位置定义协议一致性。 我们可以扩展来自(导入的)框架或库的类型。 如果在以上示例中看到,则方形按钮通过确认单个协议来确认两个协议,而该协议本身又被其他两个协议确认。 因此,只有方形按钮才能实现更改背景和文本的两种方法。 其余请根据需要确认协议。 您可以尝试更多以了解更多信息……