Tag: Xcode 10

在Xcode 10中启用新添加的选择加入功能

在WWDC 2018期间,Apple宣布了具有许多新功能的Xcode 10。 其中的许多功能会自动为您提供并默认启用,但其中一些功能可能不会显示,需要进行一些手动调整。 代码折叠 要启用它,请在“ Text Editing > Editing下打开首选项,然后选择Code folding ribbon 。 增量构建 在其他年份中,我们当中许多人可能会使用“ Whole Module编译模式来缩短构建时间。 正如苹果在博客上告诉我们的那样: 全模块优化是Swift编译器的优化模式。 整个模块优化的性能胜利在很大程度上取决于项目,但是它可能高达两倍甚至五倍。 建议今年,我​​们建议不要隐式使用“ Whole Module编译模式,而应使用“ Incremental以获得更好的结果。 默认情况下,应在Xcode 10中启用此功能,但您可能需要在项目中进行验证。 正如Apple在“ Swift的新功能”会议中提到的那样: 使用 整个模块 进行 调试 构建是改进构建的权宜之计。 整个模块 可防止增量构建。 定义正确的优化级别 自Swift 4.1起可用,有一个新的优化模式可用,该模式可以进行专门的优化以减小代码大小。 更深入的细节可以在Swift博客文章Swift 4.1中的代码大小优化模式中阅读。 提高测试性能 Xcode 10引入了许多与测试性能有关的改进。 单元测试和UI测试的完成速度都比过去快得多。 通过打开测试方案设置,可以启用三个新选项: Execute in parallel on Simulator 。 这将在多个模拟器上并行运行UI和单元测试,并大大加快测试速度。 Randomize execution order […]

Xcode 10的惊人和新功能

最近,Apple在WWDC 2018上发布了Xcode10。Xcode10比其最初发布的版本要好得多,永远不要低估内部应用程序的更改以真正影响开发生命周期。 如果您熟悉Xcode 9,将会看到巨大的变化。 Xcode 10中进行了一些令人难以置信的更改,这些更改将使您的代码比以往任何时候都更易于原型设计。 首先,让我们讨论“ 什么是Xcode ?” Xcode是用于为Apple Watch,Apple TV,iPad,iPhone和Mac制作应用程序的整个开发人员工具集。 Xcode开发将Simulator,Instruments分析工具和OS结构捆绑为tvOS SDK,watchOS SDK,iOS SDK和macOS SDK。 让我们讨论Xcode 10的惊人功能 NSGridView设计工具: 有一个惊人的新设计工具可用于布置矩阵视图。 它可以极大地帮助我们记住在Numbers(Apple iWorks)中使用电子表格的方式,您可以四处拖动以添加/删除行和列以及编辑其他详细信息。 资产目录: 在macOS 10.14或更高版本上通过亮,暗和高对比度外观支持不同的图像和颜色资源。 •支持CarPlay资源。 •支持ARKit 3D ARReferenceObject资源。 •资产目录和视图调试器的背景可以明确设置为浅色或深色,因此正面元素的显示差异很大。 支持的配置: 考虑任何新功能的主要因素将是完美的平台。 同样,这是Xcode 10轻松工作所需的设置。 最初需要运行MacOS 10.13.4或更高版本的Mac。 在Xcode 10中进行测试: Xcode 10有助于领导并发和并行测试,从而减少了独立运行测试的机会。 诚然,并行测试对macOS单元测试以及iOS和tvOS单元和UI测试也有很大帮助。 在源代码编辑器中进行更改: 当前,可以想到的是利用多光标进行编辑,目的是您可以快速更改不同的代码范围而不会稍有延迟。 构建系统: Xcode 10中的新构建系统增强了可靠性和构建性能。 该框架可以识别遗留构建系统忽略(忽略)的项目配置问题。 通过在“文件”>“项目/工作区设置”表中选择系统设置,开发人员可以更改为Xcode 10中的旧版构建系统。 关于: Binary Informatics是一家离岸开发公司,总部位于印度诺伊达,在美国海湾地区也设有开发办事处。 我们是一个由60人组成的团队,我们始终致力于为客户提供高质量的工作。 我们提供以下方面的解决方案:网站开发,Web应用程序开发,产品开发, […]

iPad 12中iPad导航栏和工具栏的高度变化

我刚刚在Apple开发者论坛中找到了一个iPad导航栏高度现在为50 [在iOS 12上]。 什么!? 在“平台状态​​联盟”或“ CocoaTouch的新增功能”中未提及这一点。 该职位成立11天(我于2018年6月16日写道)。 我在Twitter上关注了很多开发人员,阅读了许多博客,并收听了许多播客。 我怎么没听说过这一变化? iPad导航栏高度的增加真的可以吗? 我的适应性应用程序是进行调查的理想工具。 使用Xcode 9或更早版本(即以iOS 11或更早版本为目标)构建的应用程序会看到非常熟悉的行为:导航栏和工具栏的高度为44点,状态栏为20点的高度,有效导航栏高度为64点。状态栏未隐藏: iOS 11的大标题为导航栏的高度增加了52个点,总共有96个不带状态栏的点和116个带状态栏的点: 在运行iOS 12 beta 1的真实设备或iPad模拟器上运行相同的Xcode 9版本的Adaptivity,将显示状态栏内容的新布局。 现在的时间在左边,在屏幕中间留有空间,可以预期很宽的凹口! [编辑:错误!]导航栏和工具栏的高度不变。 这是苹果公司向后兼容的结果。 Xcode 10 beta 1(即针对iOS 12 beta 1)的构建确实揭示了新的iPad导航栏和工具栏的高度比50点高6点。 包括状态栏在内,导航栏现在高70点。 对于显示导航栏和工具栏的应用程序,可为您的内容减少12个高度点:😲 大型标题继续为导航栏的高度增加了52个点,总共有102个不带状态栏的点和122个带状态栏的点: 当使用表单,页面表单或弹出式呈现样式时,较大的导航和工具栏也可以在模态呈现的视图控制器中找到: 在iOS 12中,iPad标签栏的高度也从49点更改为50点。 这样可以消除iPad上工具栏和选项卡栏之间的高度差。 在iPhone选项卡上,竖条的纵向高度保持49点,横向保持32点高度。 iPhone X在工具栏和选项卡栏上增加了Home Bar的高度,其尺寸与iOS 11相同:纵向高83点,横向高53点。 正如我们在iOS历史上多次看到的那样,当重要的行为发生变化时,更大的iPad导航和工具栏高度要求开发人员通过使用Xcode 10隐式选择加入。旧应用在iOS 12上不会突然出现不同的现象(好吧,至少不是因为这个原因!!)即使在iOS 12上运行,开发人员也可以在可预见的将来发布使用Xcode 9构建的应用程序的更新,并保持以前的高度。 运行iOS 12的9.7“,10.5”和12.9“ iPad模拟器都显示相同的高出6点的导航栏和工具栏。我在iPhone上没有看到任何尺寸变化。 这只是iOS 12 beta 1,因此情况可能仍会改变。 […]

使用Swift Codable协议提取JSON片段

可编码协议确实有助于简化开发人员的生活。 它使我们能够将JSON响应转换为模型对象,而无需经历解析每个对象的繁琐过程。 我们如何在Swift中使用Codable协议? 为了更好地理解这个概念,让我们开始尝试一些编码示例: Flickr 搜索JSON示例: { “ title”:“最近上传带标签的searchtag”, “链接”:“ https:\ / \ / www.flickr.com \ / photos \ / tags \ / searchtag \ /“, “描述”:“”, “已修改”:“ 2014–05–06T05:45:56Z”, “生成器”:“ https:\ / \ / www.flickr.com”, “项目”:[{ “ title”:“ Bird \ / Pleasanton-CA”, “链接”:“ https:\ / \ / www.flickr.com \ / photos \ / geziyozbiz \ […]

在Playground Book的Contents和LiveViewController之间传递数据

鉴于目前没有有关此主题的官方资源,将数据从Contents.swift传递到LiveViewController.swift可能会引起一些麻烦。 让我们看看如何一起做。 #下载官方模板 首先,您需要从Apple Developer网站下载官方模板:template 最初的项目为我们节省了很多时间,并且可以在xCode上使用并在Simulator和iPad上启动。 我们需要使用xCode打开项目,我们将找到我们通常在IOS上使用的经典ViewController ( LiveViewController.swift )和LiveView.storyboard ,以及在Playground Book上使用的标准Contents.swift和LiveView.swift文件。 我们要做的是将Playground Book ( Contents.swift )的左侧与右侧 ( LiveViewController.swift + LiveView.storyboard )进行通信。 #设置模板 我们需要添加一些文件来改进模板并使其强大。 现在,我们可以很快地复制LiveViewController.swift和LiveView.storyboard。 在第一个中,我们将其重命名为LiveViewController_1_1 .swift,我们必须打动父级LiveViewController,然后编写代码。 在第二个中,将其重命名为LiveView_1_1.storyboard ,我们需要关联我们的类LiveViewController_1_1。 #设置Contents.swift 在下面,您将找到要在Contents.swift文件中插入的代码行,我们将从中发送数据。 在示例中,我们传递的数据类型为String,但是可以对任何类型的数据执行该过程。 通过在左侧写一个字符串,我们将看到,单击“ 执行我的代码”后 ,输入的值将直接出现在标签的右侧 。 如果您打算传递其他数据类型 ,则需要用另一种类型将数据类型“ string”替换为:boolean,integer等… 您可以在这里下载该项目

如何在Xcode中显示构建时间

如果您曾经从事过一个长期项目,则可能要处理代码优化问题 ,也许只是为了减少 构建时间以改善例如项目的beta发布时间。 Xcode的问题在于它无法轻松显示构建时间,您必须进入Product-> Perform Action-> Build With Timing Summary,然后进入报表导航器以查看每个目标的构建时间。 还有另一种聪明的方式可以在Xcode中显示构建时间,每次我们构建目标时,都可以直接在活动查看器中显示它,我们只需要在窗口终端中键入它即可: 默认写com.apple.dt.Xcode ShowBuildOperationDuration是 现在关闭并重新打开 Xcode,每次构建目标时,您应该在Xcode的顶部(即活动查看器)中看到构建时间,如下所示: 启用起来非常容易,而且超级快捷,它应该适用于每个Xcode版本 。 请记住,这将始终 可见,因此非常方便,例如长时间监视构建时间。

为AppleWatch开发:“有时叫我”

懒惰的星期日。 我看着我的AppleWatch时,很好奇,如何使其显示BTC和ETH等加密货币价格。 已经有用于此的应用程序。 但是我想建立自己的。 总而言之,这并不是最好的体验。 XCode对此实在是太过漏洞了! 我的设置是: Macbook Pro 17英寸 XCode 10.2(我尝试过9.4的所有版本都超过10.0、10.1到10.02) 装有iOS 12.1的iPhoneX 带有WatchKit OS 5.1的AppleWatch Series 4 为手表构建应用程序非常容易。 但是,当我开始向应用程序添加“复杂功能”时,挑战就开始了。 用自己的“应用程序”填充钟面中的片段,即所谓的“复杂功能”。 而这实际上使事情变得复杂: 有时,这些并发症会在表盘的“配置”中显示应用程序,有时则不会。 我尝试了几次尝试并重复了一些步骤:有时它们起作用了,有时却没有。 有时XCode无法连接到Apple Watch,有时可以。 有时它正在部署其他东西,而不是我的应用程序: 一个接一个地执行10个相等的步骤,最终得到10个不同的结果。 让我们深入探讨: 首次尝试构建App和Complication之后,我可以在真正的Apple Watch上使用Complication。 但是随后发生了奇怪的事情。 在进行了一些次要的代码更改之后,“并发症”在Watch App中不再可用。 因此,我尝试了以下步骤: 创建具有并发症的新Watchkit-App 在我的手表上运行此应用 尝试在模块方案中重用并发症 我已经以这种方式反复创建了多个应用程序。 有了第一个创建的应用程序,一切顺利。 与第二和第三没有。 在所有情况下,除了使用XCode助手创建项目并在AppleWatch上运行应用程序而无需任何自定义代码外,我什么也没有做:每个新创建的App骨架的行为都不同。 有些应用程序出现在Modular-Configurator中,有些则没有。 有时XCode只是显示一条错误消息,称为 “应用安装失败。 无法从设备读取”。 几分钟后,它变为 “应用程序安装失败:操作超时。” 我一直在关闭XCode,重新打开它,关闭我的Mac,重新启动iPhone和AppleWatch。 每当我有另一种经历。 有时XCode认为我的Apple Watch是“无法用于开发的配对设备”。 然后通过USB电缆将iPhone重新连接到本机。 但是它经常安静地发生。 […]

在Swift框架中重用代码

复制和粘贴代码很糟糕,当发现错误并不得不使用它修复所有应用程序时,情况更是如此。 但是有办法避免吗? 就在这里! 苹果提供了一种称为框架的工具,以简化代码共享。 此外,它还为我们提供了一种将相关代码分组(模块化)和限制对代码访问(封装)的机制。 在本文中,我们将介绍什么是框架以及为什么使用它们。 我将逐步指导如何创建和构建框架,以及最终如何在应用程序中使用框架。 本文将专门用Swift编写框架中的代码。 什么是框架? 框架是一个结构化目录,可以包含共享代码和共享资源,例如图像,笔尖(XIB和情节提要的混合形式)和其他资产。 您可以将其视为传递代码和/或其他可重用资产以使代码正常工作的软件包。 为什么要使用框架? 我们已经介绍了使用框架的主要原因。 另一个很好的理由是简化与组织服务的集成。 例如,贝宝(Paypal)提供了框架来帮助应用程序处理信用卡交易。 Onfido提供了执行远程身份验证的框架。 框架可以节省客户与服务的集成工作。 为客户节省了时间和金钱。 客户使用您的服务的速度越快,您就越早开始赚钱💰。 此外,在选择提供商时,时间和精力可能是潜在客户的关键因素。 实际上,市值超过92亿美元的Stripe始于对支付处理器的整合挫折。 如何建立框架 在本节中,我们将引导您完成创建和构建框架的过程。 该框架将包含一个简单的登录屏幕。 在接下来的步骤中,我们将: 使用Cocoa Touch Framework模板创建项目 使用XIB添加视图控制器 将视图插入我们的视图控制器以允许用户登录 将XIB中的视图连接到LoginViewController类 以编程方式加载视图控制器 在框架之外访问视图控制器 如果您已经熟悉这些内容,请随意跳过任何部分或全部。 1.创建项目 首先,从菜单栏中选择File > New > Project… ,以Xcode创建一个框架。 通过选择iOS Cocoa Touch Framework项目模板继续,然后单击“ 下一步” 。 最终命名您的框架,您可以随意命名。 我要使用名称MyFramework 。 还要确保选择的语言是Swift 。 命名后,单击“ 下一步”,然后选择要存储项目的位置,最后单击“ 创建” […]

迅捷4.2’de Neler Yeni

4.2sürümüSwift 4 serisinin 4.0 ve 4.1 den sonraki ikincigüncellemesidir。 Swift 4.2’de neler yeni inceleyelim。 BaslamadanönceSwift 4.2版本Xcode 10已发布。 枚举案例的派生集合: Yeni bir CaseIterable protokoltanıtıldı; bu,varsayılanolarak bir enumdakitümdurumlarınbir diziözelliğinioluşturur。 Sadece CaseIterable protokoleuymalıyız,tumenum’ındurumlarınınbir dizisi olan bir allCasesözelliğioluşturacaktır。 allCase lerin otomatik sentezi,sadeceilişkilideğerlerikullanmayan枚举içinyeralacaktır。 Ancak,gerekirse kendimizi ekleyebiliriz。 Yeni DerleyiciYönergeleri: 斯威夫特4.2歌词derlemesırasındaözelbiruyarıya da hata vermesini istersen #warning ve #erroryönergelerinikullanabilirsin ·#warning,bazıçalışmalarıneksikolduğukendinize veyabaşkalarınabirhatırlatmaolarak eklemeye yarar。 下摆#warning […]

升级项目以支持Xcode 10和Swift 4.2

将项目升级到Xcode 10.1和Swift 4.2可能会导致错误和警告,因为Swift 4.2已重命名了常量,函数和类型。 当您在Xcode 10.1中打开Xcode 9项目时,您会在Xcode 10中看到一条警告消息,要求进行Swift转换。 除了使用Swift转换器,我们还可以手动进行转换: 首先,您需要在项目目标的“ 构建”设置中更改Swift语言版本。 默认情况下,Xcode 10支持Swift 4.2版本。 Xcode 10支持以下Swift版本:v3,v4,v4.2 我们可以看到一条警告消息来更新项目设置,单击“ 执行更改” 升级到Swift 4.2: 框架更新 套料 1.类型 2.常数 3.功能 嵌套类型: UIApplicationState: UIApplicationState转换为嵌套类型,如下所示—状态嵌套在UIApplication中。 UITabBarItemPositioning: ItemPositioning嵌套在UITabBar中。 嵌套常量: 通知:通知名称嵌套在UIApplicaiton中。 UIFloatingRange: UIFloatRangeZero和UIFloatRangeInfinite嵌套在UIFloatRange中。 嵌套函数: 插图和图像: UIEdgeInsetsInsetRect和UIImagePNGRepresentation嵌套在实例方法内部。 字符串转换: CGPoint,CGSize,CGRect等使用JSONEncoder进行编码,并且可以使用JSONDecoder进行解码。 注意:—引用自WWDC 2018 会议202 。 以下是其他错误: “ UIApplicationLaunchOptionsKey”已重命名为“ UIApplication.LaunchOptionsKey” “ UIApplicationOpenURLOptionsKey”已重命名为“ UIApplication.OpenURLOptionsKey” UIViewController的实例方法addChildViewController()已重命名为addChild() UIViewController的实例方法didMove(toParentViewController:)已重命名为didMove(toParent:) “ UIControlState”已重命名为“ UIControl.State” […]