[译]Xcode 12愿望清单: Swift UI、iPadOS等

170 阅读15分钟

原文链接:Xcode 12 wish list: SwiftUI, iPadOS, and more

距离WWDC 20还有九个月,现在是做梦的时候了。

Xcode 11即将成为金牌大师,这意味着苹果的团队已经在努力开发未来的功能。尽管拥有令人惊讶的新功能总是件好事,但让苹果知道什么功能会对我们产生最大的影响也是明智的,现在——离WWDC 20还有9个月——是最佳时机。

所以,我整理了Xcode 12的愿望清单,还问了社区他们最想看到什么。不出所料,我被应答淹没了——尽管我们非常喜欢使用Xcode,但它总能做得更好。

让我们潜入…

赞助与Swift黑客,并达到世界上最大的Swift社区!

Swift UI或半身像

WWDC 19伴随着苹果公司的大量公告,但几乎所有公告都被Swift UI这个庞然大物卷走了。尽管Swift UI的公共生活还为时尚早,但很明显,这将是苹果发展的未来——我们只是真正看到了这项技术能做些什么。

那么,Xcode 12能为Swift UI带来什么呢?路易斯·阿斯科贝帮助组织了NS Spain:

这种观点出人意料地普遍: ios 13.0对开发者来说并不是一个特别好的版本,而且发布时有相当多的错误。事实上,ios 13.1已经只有几天的时间了——大概就像苹果敢于在不引发公关噩梦的情况下完成第一天的补丁一样——这在很大程度上说明了初始版本的稳定性,ios 13.1肯定修复了一系列Swift UI错误。

我们还不知道苹果是否会版本化现有的Swift UI功能。也就是说,如果一个应用程序因为ios 13.0的Swift UI中的一个错误而看起来像某种样子,那么该应用程序会在ios 13.1中自动更改,还是我们需要recompile/resubmit我们的构建?这一点尤其紧迫,因为13.1中有实际的布局变化–应用看起来确实不同。

把早期的错误放在一边,一些人在Swift UI的初始版本中缺少主要功能:

绝对是Swift UI 2.0

我可以用现在的Swift UI做很多事情,但是它远远落后于我用UI Kit做的事情,以至于现在不值得

——爱丽丝(@CheshireChild_) 2019年9月3日

我想到的一个改进是,如果对象库可以显示您自己的类型,那就太好了。这样你就可以在预览中拖动它们,而不是通过代码添加它们

——哈希尔·沙阿(@_HarshilShah) 2019年9月4日

收藏视图是一个特殊的症结,尤其是因为它们在iOS 13中通过新的合成布局系统获得了如此大规模的升级。我见过一些人试图为Swift UI包装它们,但事实证明这是一个缓慢而复杂的过程——希望这是苹果在Swift UI 2.0的首要任务。

请记住,说“哦,苹果为什么没有添加……”很容易但事实是,Swift UI在苹果已经生产了多年,他们的大部分工作都涉及找出一个运行良好的语法——同时也塑造Swift,使这种语法成为可能。

更重要的是,直到最近,只有相对较少的人知道Swift UI的存在,现在它已经公开,希望苹果的其他团队也在考虑如何集成他们的框架。因此,我对明年寄予厚望的是MapKit、Safari、照片导入等,所有这些都获得了智能Swift UI包装,使它们更容易使用。

下一站: iPadOS

Swift UI很棒,但是iPad上的Swift UI怎么样?

Swift UI在iPad上的Swift游乐场,又名“iPad上的Xcode”

——约翰·戈林(@epaga) 2019年9月3日

多年来,将Xcode移植到iPad上一直是一个受欢迎的请求,直到最近,它看起来像一个白日梦——你真的能想象界面生成器在一个小屏幕上吗?不,我也不能。

但是有了Swift UI,我们现在有了一种非常简单、更具交互性的用户界面构建方式——这种方式在iPad上非常有效。老实说,一想到我能在我的iPad专业版上写Swift UI,我就会想到各种令人兴奋的方向,所以我真的希望这在某个时候会实现。

然而,尽管令人兴奋,我认为还有其他事情需要解决。

例如,斯威夫特游乐场和Xcode游乐场之间的差距太大了,这只会造成一个学习鸿沟,而这个鸿沟实际上不应该存在。iPad上的Swift游乐场有苹果和其他公司**(包括我!)**提供的大量令人敬畏的互动学习材料,这是由Xcode中不存在的游乐场图书系统实现的。

这里有几个选项:

  1. 苹果将Swift游乐场的功能添加到Xcode游乐场中。这当然可以避免两者之间的命名混淆,但也有惹恼大量Xcode用户的风险。

  2. 苹果公司直接将Swift游乐场移植到苹果电脑上,要么使用催化剂,要么构建本地AppKit/SwiftUI版本。这对每个人都能编码来说是一次巨大的打击,有助于弥合iPad上的Swift游乐场和mac OS上的Xcode之间的差距。

  3. 苹果在mac OS上做了一个增强的Swift游乐场端口,然后在Swift游乐场中添加了一些Xcode的功能,这样这个工具就变得更加有用了。

在这三个应用中,我怀疑第二个最有可能,因为这是最容易做到的——把现有的iOS应用作为一个独立的应用,在mac OS上运行,与Xcode没有任何关系或真正的依赖。这也将允许他们顺利地移植他们的整个课程,这将是伟大的。

然而,最后一个选择是我认为游乐场需要在哪里。你能想象在Swift游乐场中构建Swift UI应用程序吗?与你周围的人分享这些应用程序怎么样?将这些应用程序发送到应用商店怎么样?

ios开发一个昂贵的爱好,如果苹果能找到一种方法帮助人们从他们的iPad上学习、构建和发布应用程序,那么入门成本将降至299美元。这就是当每个人都能编码时的样子。

(嘿,如果我在做梦:我很想在我的iPhone上看到Swift Playground,哪怕只是为了在一个简单的编辑器中运行Swift代码。

告诉我们,不要给我们看

你可能会认为,如果你必须在让某样东西工作和解释某样东西是如何工作之间做出选择,后者会比前者容易得多。

嗯,没有。苹果应该在Xcode 12中改变什么?

毫无疑问,苹果的文档经历了艰难的几年,最近它很难跟上iOS 13的大量变化。

大约两年前**,我给苹果写了一封信,我们能谈谈你的文档吗,因为有太多的应用编程接口仍然被关闭,因为“没有可用的概述”乔恩·马多克斯最近指出**,即使是苹果在ios 13中具有里程碑意义的一些新功能也遭遇了同样的命运,这很可悲。

最近,我写了《**如何阅读苹果的开发者**文档》,试图帮助人们学习如何阅读标题中的评论,更多的是作为一种了解事情实际上是如何工作的方式。

现在我们有了最后一颗钉子: Swift UI基于协议的方法使得它的应用编程接口引用几乎不可用。苹果文档的核心一直是类型名和功能签名,但在Swift UI时代,这已经不再起作用了。

例如,这是导航视图的文档。它没有任何实际使用这个东西的例子,而是有近200个指向任何Swift UI视图所能做的一切的链接——所有其他Swift UI类型都显示了相同的列表,让你用Cmd+F来挖掘东西。

然而,苹果确实推出一种全新的文档类型:它的**Swift UI系列学习制作应用**程序是建立在一个新的演示平台之上的,这个平台是动态的、交互式的、结果驱动的,并且充满了图片,让它栩栩如生。

虽然这对那些只想了解事实的经验丰富的开发者来说没什么帮助,但苹果的新教程平台似乎预示着他们的关注点发生了转变,这肯定反映了《人人都能写代码》的经验。这种新方法专注于结构化教学、现实世界的结果和测试——每一步以简短的测验结束的方式简单而聪明,并在未来几年开辟了一系列游戏化选项。我的用于学习Swift的**打开应用程序**可以让你在学习语言的不同部分时获得徽章。苹果能——苹果——做类似的事情吗?

同样,对于那些只想要简单、可搜索的文本文档的有经验的开发人员来说,这听起来不太好,而且我确实觉得苹果的Swift UI教程很难学习。然而,这些东西不是为我写的,也不应该是为我写的——苹果似乎在加倍努力帮助更多人进入Swift开发领域,这太棒了。

现在我们只需要等待,看看他们的文档资源是否能扩展到涵盖新旧风格的文档…

什么是核心数据的Swift UI?

Swift UI强迫所有人(包括苹果!)重新思考构建应用程序意味着什么,所以许多人想知道如果同样戏剧性的重新思考应用于核心图形、核心图像甚至核心数据会是什么样子。

视觉核心数据:我想看看数据是如何组织的,即使它只是一个表。我希望看到从一个数据模型到一个新数据模型的冲突,这样我就可以更有信心地更新模式。

——蒂姆·伊森曼**2019年9月3日**

虽然我知道有些人不喜欢使用可视化编辑器构建Swift UI应用程序,但你必须承认,对核心数据进行可视化读出会非常有帮助。

在讨论的另一方面,我鼓励每个人探索蒸汽是**如何处理**数据库的——你在结构中定义你的对象类型,它会自动创建它们。然后,它提供了搜索、过滤和排序API,这些API严重依赖于密钥路径和相关类型,从而形成了一个极其快速的解决方案,使得核心数据的@NS托管类看起来有点过时。

虽然我们确实有了新的属性包装器来以稍微好一点的方式处理核心数据,但我仍然对未来的更新抱有希望。

框架的未来是SPM!

Xcode 11最大和最重要的改进之一是为iOS引入了Swift Package Manager。相信我:项目转换需要一点时间,但我预计在12个月内,SPM将成为大多数项目的标准。

当然,还是可以改进的:

我想要一个SPM的应用商店。找框架,搜一下加一下就可以了。还可以选择要将多少依赖关系引入到项目中。

——盲人力量(@blind_power_yt)2019年9月4日

这将为SPM中的可发现性做大量工作,并且肯定有助于快速推动采用。与此同时,戴夫·韦尔的**Swift PM库**是发现代码的绝佳方式,并在填补GitHub神话般的Swift包集合留下的空白方面做得很好。

资产目录redux

无论您是存储位图、矢量、纹理还是颜色,资产目录都是Xcode中首选的存储机制。他们可能会有很大的延迟,尤其是当你文件夹里有很多东西的时候,但至少他们完成了工作。

他们能再加把劲吗?当然啦!

命名字体,类似于命名颜色。

——Dr.Michael Lauer(@Dr Mickey Lauer)2019年9月3日

我希望看到删除未使用的资产功能。

-Rahul Vyas(@im rahu lv yas) 4,2019

这两种情况的一个解决方案是code gen,这是我早在**Xcode 10愿望清单**上就有的东西——如果资产目录编译成常量,如Image.logo或Color. main,这不仅可以扩展到字体、故事板、表格视图单元格标识符等,还可以用来创建拉胡尔未使用的糟糕检测。

面向世界的Xcode

苹果的“人人都能写代码”计划继续推进,并有望获得应有的成功。但是,尽管Xcode为我们提供了一系列本地化工具,但它仍然是苹果为数不多的完全使用英语的应用程序之一,无论你的设置如何。

是的,你读对了:如果你把你的苹果电脑切换到西班牙语/日语/中文等,Finder会更新,Safari会更新,许多第三方应用程序会更新,但是Xcode仍然会用英语向你展示一切。

是的,世界各地的许多公司用英语开发软件,因为在不同国家远程工作或在办公室之间旅行是很常见的,但值得记住的是,Swift最大的(非苹果)会议在日本举行,并有日语和英语的现场翻译,这样每个人都可以跟着去。

简化版本控制

Xcode已经有了一些Git集成,但是还有很多改进的余地:

项目:Project/file级别的Xcode主题来区分窗口。更多可合并的IB和项目文件格式。

——埃德·鲁特(@NS Goat) 2019年9月4日

“更可合并的IB和项目文件格式”这句话可能会让一些人眼花,因为Xcode的项目文件可能难以理解,如果你不小心,会导致各种合并问题。

公平地说,故事板XML随着时间的推移有所改进——Xcode过去常常改变故事板,即使你刚刚打开它们,这是一个真正的痛苦。

如果我们谈论的是改进的Git集成,通过Xcode终端访问Git有用吗?蒂亚戈·克鲁兹当然这么认为:

如果能够在Xcode中启动终端会话,那就太好了。对于像我这样的人来说,他们更喜欢在那里执行git命令(而不是使用Xcode集成),或者只是测试一个自动化的脚本。所有这些都没有切换上下文太多。

——蒂亚戈·克鲁兹(Thiago Cruz)2019年9月3日

我以前在嵌入式终端上使用过编辑器,虽然拥有它当然很好,但它从来都不是我想象中的生产力助推器。尽管如此,还是有很多人会觉得这是一个受欢迎的改进,Xcode的调试区域有很多空间。

准备好了吗?战斗!

是时候说点更有争议的了:

一个官方的Swift风格指南和自动格式化+格式保存。

——特里斯坦·迪彭代尔(@Tridie 2000) 2019年9月3日

众所周知,大多数人都赞成官方编码风格,只要他们特定的编码风格被使用。

撇开笑话不谈,**SE-0250**确实引发了一场关于官方Swift风格应该是什么样子的更广泛的对话,现在Xcode的可视化Swift UI编辑器开始代表我们生成Swift代码,这变得更加紧迫。

虽然我几乎可以肯定,我需要做一些改变来适应已经决定的事情,但有一个官方的斯威夫特风格指南对我来说是一件受欢迎的事情。

最后…

更多功能?也许吧,但是…

让它稳定,我现在不关心新功能。我希望Xcode不要每小时对我崩溃两次。

——唐(@don by tyqi) 2019年9月3日

虽然我没有经历过Xcode每小时崩溃两次的不幸,但我发现远程调试会导致各种冻结,对操场稳定性说得越少越好。

对Xcode来说,这是又一个重要的一年,所以也许未来有一个“iOS 12年”并不是一个坏主意…

我错过了什么?

认为未来Xcode版本的哪些功能将是一个很好的补充?推特我@twostraws,让我知道!

赞助与Swift黑客,并达到世界上最大的Swift社区!