Tag: xcode

重新使用Xcode模拟位置

早在2013年,我写了一篇有关使用Xcode模拟位置的文章。 在2016年,Apple改进了这些工具,以使模拟位置变得更加容易且不易出错。 让我们看一下Apple对开发工具的增强功能以​​及已解决的问题。 GPX文件和Xcode Xcode使用标准化的文件类型来模拟位置。 GPX规范概述了定义路径或地理定位坐标集的许多不同方法。 Xcode仅使用标记,因此,如果找到一个生成基于或的GPX文件的工具,Xcode将无法正确模拟您的位置。 Xcode将像通过一条路线一样通过一系列标签运行,但是它没有提供任何机制来控制航路点列表中每个条目的速度或时间量。 可以在以下示例中找到GPX文件的示例,该文件模拟WWDC与会者朝库比蒂诺的朝圣(我希望他们会游泳): Moscone Cupertino 采购GPX文件 除非您希望将多个航路点串在一起以模拟用户驾驶,否则Xcode可以为您提供模拟位置的大部分方法。 在“ 新建文件”表中,“资源”部分下现在提供了创建GPX文件的选项。 生成的默认GPX文件自动设置为Cupertino。 将lat和lon属性修改为新的静态位置,即可开始使用。 配置项目 配置项目以模拟位置非常简单。 将GPX文件添加到项目后,可以在项目的方案编辑器或Xcode的调试区域中启用位置模拟。 通过导航到菜单栏中的产品->方案->编辑方案,打开项目的方案编辑器。 在方案的“运行”操作中,选择“选项”选项卡。 您应该看到类似以下内容: 另一个选择是在应用程序运行时对其进行调整。 在应用程序运行时,通过导航至菜单栏中的“视图”->“调试区域”->“显示调试区域”,打开“调试区域”(如果尚未打开)。 在“调试跳转栏”中,您将在“调试视图层次结构”按钮旁边看到导航图标。 单击它会显示类似于以下的视图: 最后一种模拟位置的方法仅适用于iOS Simulator。 导航至iOS Simulator菜单栏中的Debug-> Location会弹出一些选项,用于模拟静态位置(Apple或Custom Location)或模拟用户骑自行车,跑步或驾驶。 通过“自定义位置”选项,您可以输入静态的纬度和经度: 移动设备的模拟都在Cupertino区域中,因此,如果您需要模拟其他内容,则可以对多个标签进行拍摄。 最后说明 Apple修复的最大错误是模拟设备上的位置。 仅在调试器运行时模拟位置。 停止调试器会将位置服务的控制权返回给iOS设备上的相应无线电和传感器。

Xcode 7离线视图

当使用情节提要板时,Xcode 7在Interface Builder中引入了许多改进。 情节提要参考 ,改进的Unwind Segues和Segue子类化是有用的工具,将有助于使用情节提要构建和维护复杂的应用程序。 有关这些主题的所有详细信息,可以在WWDC 2015的“故事板的新增功能”部分中找到。 在此会话中强调的一项重要的小功能是能够在任何视图控制器的场景基座中添加“脱机视图”。 如果您需要呈现一个仅在其容器视图控制器显示后才显示的复杂视图,那么您很可能使用了以下两种方法之一: 在单独的xib文件中定义视图并加载它,如下所示: 让myView = NSBundle.mainBundle()。loadNibNamed(“ MyViewNib”,所有者:self,选项:nil).first! 如! UIView self.view.addSubview(myView) 将视图定义为容器视图控制器层次结构的一部分,可能使用alpha = 0或在主视图范围之外,然后响应某些事件而显示视图。 使用单独的xib文件方法,我们必须使用上面的代码以编程方式加载视图。 如果需要将IBAction和IBOutlet直接链接到视图控制器,则可以通过将视图控制器类指定为xib文件的文件所有者来实现。 尽管这可行,但它需要几个配置步骤,如果我们可以在其视图控制器旁边看到该视图,并且能够直接链接IBAction和IBOutlet,那就更好了。 所有这些都可以通过将视图直接添加到IB中的视图控制器的层次结构中来完成,但是最终我们可以将多个视图彼此并排堆叠,并且在视觉上由于它们彼此重叠而变得难以使用。 离线视图通过将所有内容保留在同一画布中,同时清楚地显示视图控制器及其离线视图,从而大大提高了故事板的清晰度: 要将离线视图添加到视图控制器,只需将UIView(或子类)拖到视图控制器场景停靠区中,它将显示在其上方。 同样,可以根据需要添加多个脱机视图并将其链接到视图控制器。 新添加的视图可以通过CTRL +拖动到View Controller的源文件中,作为IBOutlet链接: 显示视图 如果编译并运行该应用程序,即使调试器显示已设置了相应的IBOutlet,也将看到该视图不可见。 这是因为离线视图不会自动添加到视图层次结构中。 为了显示视图,我们需要自己添加它(例如,在@IBAction方法内部): self.view.addSubview(offlineView) 如果再次构建并运行,我们将看到该视图出现在主视图的左上角,并且其大小与在“界面”构建器中指定的宽度和高度匹配。 查看尺寸 以上所有都是很棒的-但是如果我们希望离线视图成为与其超级视图范围相匹配的叠加层,该怎么办? 从Xcode 7.0 beta 3开始,无法告诉IB添加后,脱机视图应扩展到容器视图,因此我们需要以编程方式进行此操作。 幸运的是,我们的朋友自动版式可以为您提供帮助。 我们可以编写一个简单的UIView扩展类,以将所有视图锚点约束到其超级视图边缘。 有关如何完成的信息,请参见本要点。 有了这个扩展,我们的视图可以像这样锚定到超级视图的边缘: self.view.addSubview(offlineView)//这是我们的@IBOutlet offlineView.anchorAllEdgesToSuperview()// UIView扩展方法 警惕的读者会注意到,以编程方式添加约束时,translatesAutoresizingMaskIntoConstraints设置为false。 WWDC 2015的第2部分“自动布局的奥秘”部分对此做了很好的解释。 结论 脱机视图是Interface […]

Flutter vs React Native-您需要知道的。 – openGeeksLab的Dmytro Dvurechenskyi

Flutter vs React Native-您需要知道的。 先进的工具不时需要现代流行的移动应用程序来实现它们。 因此,专业开发商努力满足这一领域的实际市场需求。 最有趣,最有用的创新成为讨论的主题。 React Native跨平台于2015年在GitHub上作为开源发布,结合了Android和iOS本机API。 尽管它具有无可置疑的好处,但是我们可以肯定的是,您一定听说过另一种有趣的,不寻常的编程方法-Flutter,它是Google对标准技术的高级答复。 这个新的用户界面于2017年启动,旨在在创纪录的时间内制作iOS和Android版本上的高质量本机应用程序。 什么是颤振? Flutter是Google对React Native的回应,我敢肯定您一定听说过它。 在Flutter发布之后,各种移动开发社区开始进行比较讨论,其中“ React Native或Flutter”是使用JavaScript开发跨平台移动应用程序的最佳框架。 但是,这很容易。 Flutter允许Google开发人员同时使用完全相同的代码同时为iOS和Android构建应用。 对于Flutter来说,这听起来像是一次巨大的飞跃,但要赶上React Native仍然有很长的路要走。 目前,对React Native开发心存疑虑的开发人员甚至没有认真考虑Flutter。 尽管我相信Flutter可能是移动应用程序的未来。 关于Flutter的5个快速总结: –这是Dart语言。 说什么飞镖? !!! 那是大多数开发人员的反应。 –推荐的带有Flutter插件的IDE是Android Studio或Intellij Idea。 – Flutter具有Dart桥,应用程序较大,但运行速度更快。 与带有Javascript bridge的React Native不同。 – React Native和Flutter共享类似的范例,例如事件处理程序和类扩展。 – Flutter的动画和安装体验分别非常出色和流畅。 大多数人在初次熟悉Flutter时会问的问题是“它像React Native吗?” 为了回答这个问题,我们的开发人员Viktor Gavrilov驾驶Flutter旋转了一下,这是他的发现: 在添加软件包时: 在Flutter中,所有内容都会自动连接。 但是,在React中,某些本机模块是手动连接的。 我们通过内置的“程序包管理器”连接程序包,因此不必像通常那样通过Xcode CocoaPods,React Native链接进行连接,而是通过npm将程序包连接到RN。 我们添加到pubspec.yaml。 该包,我们之前在https://pub.dartlang.org/flutter中找到并执行以下命令: “颤振包得到” […]

Swift / Objective-C桥接中的循环引用

任何拥有两年以上历史的iOS / MacOS项目都必须处理Swift和Objective-C的混搭 ,在这种环境中,不同的语言会试图共存。 但是,这种和平可能会受到某些特殊条件的威胁,在某些特殊条件下,由于歧义性,无法正确建立两种语言之间的桥梁,例如在循环引用的情况下。 以这种情况为例: ObjcMainClass由符合Swift编写的ComponentProtocol的对象组成,因此需要导入ProjectName-Swift.h生成的文件 ObjcMainClassTests是用于测试ObjcMainClass组件的Objective-C单元测试类。 它将使用符合ComponentProtocol的StubComponent对象,以控制要测试的公共方法的执行流程。 StubComponent是在单元测试目标中定义的,并且需要包含@testable import ProjectName代码才能找到协议定义。 由于StubComponent位于单元目标中,并且是用Swift编写的,因此ObjcMainClassTests必须导入ProjectNameTests-Swift.h生成的文件。 尝试运行单元测试,您得到的是“在ProjectNameTests-Swift.h中找不到模块ProjectName”错误: 在采用模拟单元测试方法的项目中,这种情况可能很常见,其中将新Swift接口的具体存根传递到现有的Objective-C实体。 最好的解决方案是减少Objective-C和Swift代码之间所需的桥梁数量。 尝试将模块或对象图迁移到Swift,或在计划迁移本身之前在Objective-C中临时编写协议和存根。 第二种方法显示在Github上的演示项目中,您可以在此处找到失败和通过的场景:https://github.com/matsoftware/TestObjcSwiftCircularReference。 桥接愉快☺

逐步指南以安装XCODE进行IOS开发

在本教程中,您将学习如何在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.单击Xco​​de下方的GET按钮,然后等待其安装。 大约大小为4.8GB,因此如果您仍在使用2G,则可能需要一些时间(当然不是我) 5.安装完成后,单击应用程序中的XCODE图标并启动它。 6.轰! 您已准备好摇滚。 现在,您已经在MAC上成功安装了Xcode,并且所有设置均可用于启动Swift。 因此,让我们进入下一章。 到时候那里见 注意:我们在第1章中讨论了Swift的一些基础知识。如果您错过了该章,请在这里阅读:单击此处获得第1章。 如果您喜欢我的教程,并且想学习iOS和Swift,请访问我的博客www.iosdevelopers.org 现在,Namaste! 🙂

注释cacher les clefs d’API dans les应用程序Swift

实用程序«.plist»倒股票和其他方面的API.Contexte:Git,Github,Xcode,Swift 注释utiliter Github倾注了部分申请,没有livrer les clefs人员d’API? 消除无用票据,无用证据和使用限制。 即时报刊,收养收养人杂志: 1倒立清单咖啡机les clefs ex /«ApiKeys .plist» dans le projet Xcode 2 Ajouter ce fichier de clef dans la liste«.gitignore»des fichiersà忽略者 3 Ecrire une fon d’accèsaux clefs,dans un fichier swift。 前/«ApiKeys.swift» 4 Utiliser la fuction pourrécupérerles clefs 1Créerle fichier«Apikeys.plist»dans Xcode 2 Ajouter ce fichier de clef dans la liste«.gitignore»des fichiersà忽略者 […]

iOS Developer首席财务分析师🚀

从Lead Finance Analyst过渡到iOS Developer的18个月过渡的简短见解。 2015年12月 🏦 我是26岁的结构化财务分析师。 我正在开发和使用高级现金流量模型来领导对亿万结构性金融交易的分析。 听起来很酷,但事实并非如此。 2016年一月 由于对技术领域的好奇心,我开始了一个副项目Boolerang.co.uk-一个 伦敦科技工作平台。 很有趣。 我正在学习新的编程语言,开发新技术,并通过在线平台将软件工程师与雇主联系起来。 我一直很喜欢编程,但是从没有如此接近这个领域的机会。 2016年4月 🚀 全职。 Finance 0,Boolerang1。我离开了首席结构财务分析师的职位,全职从事Boolerang的工作。 自从大学期间在洛杉矶工作以来,这是我与工作相关的工作中获得的最大乐趣。 这也是我去过的最“失业”的时期,这真是令人恐惧。 👻 话虽这么说,伦敦的技术人才需求/供应差距令人难以置信地令人难以理解,这为我的决定提供了支持。 到本月底,Boolerang已有200多名雇主发布工作,并且软件工程师似乎很容易找到并吸引该平台-尤其是当我在“没有招聘人员的地方”下线时。 😆 iOS工程师并非如此。 2016年五月 生活是美好的。 Boolerang很好。 关于越来越难以捉摸的“ iOS工程师”,我与雇主之间的对话越来越多。 他们表面上的稀缺使我想起了异国情调的阿凡达(Avatar)风格的“ unobtainium”。 因此,我下载了Xcode,这是Apple的iOS驱动的IDE。 没什么… 2016年9月 我在9–9工作。 Boolerang上为9–6,iOS开发上为6–9。 Boolerang正在连接600位雇主和8’000位软件工程师。 我绝对非常喜欢iOS开发。 技术,集成等等,还有一些CocoaPods…👌 2016年12月 🙏 Boolerang需要专职人员,而且获得帮助比我想象的要容易。 现在,我可以花更多的时间在“ iOS’ing”上,同时知道Boolerang具有继续增长所需的一切。 全力以赴。 2017年三月 到这个时候,我已经构建了34个未发布的iOS应用程序,并观看了来自斯坦福大学,苹果大学,乌迪米和树上小屋的数百次演讲。 我的三个金融学前同事离开这个行业,通过Makers Academy /大会寻求软件相关的工作(我认为我对财务和专业技术的不断评论最终通过🙈获得了)。 iOS开发方面的职业? 此时的重返金融的想法令人发笑,没有吸引力,而且Boolerang绝对不如18个月前那么性感。 […]

如何避免协议导向沉迷于编程

大约一年前,我正在观看2015年的WWDC视频,当时一次特别的会议演讲引起了我的注意。 似乎引起了所有人的注意。 鉴于在过去一年中创建了与Swift相关的内容,许多人已跃入全新的编程范式。 我当然是指大卫·亚伯拉罕斯(David Abrahams)提出的有关面向协议的编程的精彩演讲。 如果您还没有看到它,并且使用Swift编写应用程序,那么绝对值得一试! 认真地做吧。 接下来的事情并不是试图减轻演讲中所呈现的内容的酷感。 如果正确应用协议扩展,它将是一个很棒的工具,它具有许多实际用途,我们将在本文的最后进行介绍。 问题是我们所有人都感到内gui(绝对包括我自己)。 当您拥有闪亮的新锤子时,一切都将变成钉子。 因此,在过去的一年半中,协议一直在敲定,我们的项目是钉子。 我们学到了什么? POOP的起源 它总是以一种天真的渴望学习新事物而开始。 与在圣诞节打开Nintendo 64的包装并整夜陪同兄弟姐妹玩Goldeneye并没有什么不同。 是的,我知道那与我约会的时间。 协议定向痴迷编程是过度使用协议扩展需求的产物,尤其是在不需要它们的情况下。 POOP是对令人敬畏的新工具的一种完全可以理解的反应,但是正如我之前所说的,在编程中所做的任何事情总会有取舍。 仅查看收益是远远不够的。 我们必须始终考虑成本。 那么面向协议编程的权衡是什么? 为什么我们要避免将所有内容重构为协议和协议扩展的冲动? 是什么使POOP便便? 一切都取决于 代码的 可读性 。 痴迷于协议定向的编程如何危害代码的可读性。 与开发人员团队合作时,有效的沟通是成功的关键。 可读的代码可导致更好的沟通。 不可读的代码使团队工作变慢,因为每个人都需要更多时间来弄清楚它的作用。 作为团队中的开发人员,您应该始终努力减少代码对同事的认知负担。 拥有可读的代码不仅仅意味着选择正确的类和函数名称。 与在单个位置中显示适当数量的信息有很多关系。 另一个开发人员应该只查看一个文件就可以弄清楚代码的作用。 这个有一个名词。 我们称其为本地推理。 这意味着人们应该能够推理您的代码,而不必到处移动太多。 它是一种支持预先的显式代码的设计哲学。 当您出于保留局部推理的目的而编写代码时,尝试避免使用复杂的类层次结构和设计,这些层次结构和设计迫使其他开发人员从一个文件跳到另一个文件,只是为了清楚地了解代码的作用。 协议定向痴迷编程是有问题的,因为它使本地推理几乎不可能。 为了更好地理解为什么会出现这种情况,我请您取悦 惊人的爆炸结构 假设您有一个基本的Milkshake结构。 它具有您可能熟悉的一些变量和功能。 现在我们可能不一定同意授予Milkshake结构的功能,但是我们可以同意这里有可读的代码块。 就是说,所有这些都为我们阐明了。 我们不需要去其他地方去了解这个结构的作用。 很容易推理。 如果我们将奶昔的一部分重构为一些单独的协议,将会发生什么? 好吧,这并不可怕。 从技术上讲,它仍然像我们的其他结构定义一样工作。 不幸的是,它的可读性差得多。 […]

Xcode中的花哨字面量

文字 今天,我将向您介绍Swift中可用的一些奇特的文字。 它们可以帮助您简化Swift程序员的生活。 首先,让我们解释一下“文字”一词​​实际上代表什么。 根据维基百科 : 在计算机科学中,文字是用于表示源代码中的固定值的符号。 这意味着在Swift中,以下论点是正确的: 让someNumber = 1 // 1是文字 let someString =“生日快乐” //“生日快乐”是一个文字 让optionalBool:布尔? = nil // nil是文字 通常,文字是程序员直接键入的值。 多年来,我们在其他编程语言中都有这种文字,因此,在Swift中这并不是什么前沿技术。 但是,并非所有人都知道Xcode还提供了颜色和图像的文字。 颜色文字 考虑一下您在代码中编写了多少次这样的代码: 让someShadeOfGreen = UIColor(红色:25/255,绿色:210/255,蓝色:95/255,alpha:1.0) 好的,也许您比我聪明一些,并且您已经为UIColor编写了自己的初始化程序,所以您不必每次想创建UIColor对象时都用255和alpha编写此奇怪的除法。 无论如何,它仍然不能使您对这种颜色有任何了解。 我为这个变量命名,所以我可以假设稍后再回到这部分代码后,它有些绿色。 但是,您知道,“ 灰色的五十道阴影 ”中的五十个字是有原因的。 有很多。 值得一提的是,Color Literals派上了用场,它使我们可以将值分配给UIColor变量并预览结果。 您只需开始在编辑器中键入colorliteral即可使用Color Literals 。 然后,将显示预览。 双击可以从调色板中选择所需的任何颜色,也可以只键入适当的RGB值: 我认为这是在代码中创建UIColor对象的不错选择。 图片文字 Xcode中另一个可用的奇特文字是Image Literals。 它们的工作方式与Color Literals类似。 让我们讨论一种创建UIImage对象的经典方法, 该对象包含资产中的一些图像: 让pepeImage = UIImage(命名为:“ […]

使用iOS 12中的自定义Siri快捷方式构建交互式语音应用

Siri Shortcut是Apple在iOS 12中基于SiriKit框架引入的新API。 它为开发人员提供了为用户在应用程序中经常使用的活动提供自定义快捷方式的方法。 用户通过向Siri发出语音命令来调用快捷方式,可以通过记录与快捷方式关联的自定义短语来自定义实际短语。 自iOS 10中发布SiriKit以来,Apple一直在其提供的多个内置域(例如乘车共享,付款,消息传递等)中限制Siri的使用。开发人员无法选择提供自己的自定义意图。 但是,借助iOS 12中的Siri Shortcut,Apple终于为开发人员提供了框架,供他们构建自己的自定义意图,该意图可以使用至少可以用于Siri Shortcut的自定义参数和响应进行配置。 开发人员创建自定义意图的能力为开发人员打开了许多与Siri进行交互的方式,例如: 点东西(例如披萨,咖啡,早餐😋); 搜索可以连接到任何API的信息; 执行我们希望Siri执行的任何自定义操作; 还有很多! Apple鼓励开发人员仅为用户创建有意义的快捷方式,例如,为用户在使用应用程序时希望重复的活动提供快捷方式。 不建议为用户仅在应用程序中执行一次的活动创建快捷方式。 我真的鼓励大家观看下面的Apple WWDC 2018视频,以从Siri工程师那里了解有关Siri Shortcut的更多信息: Siri快捷方式简介– WWDC 2018 –视频– Apple Developer Siri快捷方式是iOS 12中的一项强大新功能,可让您的应用向Siri公开其功能。 这个… developer.apple.com 使用Siri快捷键构建语音– WWDC 2018 –视频– Apple Developer Siri快捷方式是帮助人们执行操作或从您的应用程序获取信息的好方法,但是快捷方式可以是… developer.apple.com 在本文中,我想提供一个简单的示例,说明如何使用Siri Shortcut使用The Movie DB API对即将上映的电影进行搜索,然后使用自定义Intent UI Extension显示结果。 为了使用Siri快捷方式构建演示应用程序,我们将介绍以下内容: 创建新项目并设置Podfile。 创建共享框架以在主应用程序和扩展之间共享。 构建影片列表视图控制器 创建Siri意向定义文件 创建意图扩展 创建意图UI扩展 从View […]