Tag: Swift Playgrounds

Swift 3(即时消息:迁移)

最近有人告诉我要将一个商业项目转换为Swift3。然后它是用Swift 2.0编写的。 希望这些笔记可以帮助某人做同样的事情。 迁移过程中需要完成三个高级步骤 更新第三方依赖关系; 更新您的应用程序项目和内部框架; 更新你的叉子(这是一个痛点,我告诉过你!)。 语言 从第一天开始,我就一直在用Swift写作,但是我对Swift 3没有太多的经验。我发现迁移擅长于学习Swift 3的特定知识,但从一开始就不擅长学习Swift。 关于该语言有很多读物,但我建议您先阅读迁移指南-它具有指向相关文档的链接。 API设计准则 这是Swift [3]开发人员的知名读物。 我要说的是,这些指导方针相当简单并且易于理解。 但是,除非您已经使用Swift 3编写了一段时间,否则您可能会发现它们很难立即掌握。 没关系 如果您今天对如何使您的API更加“灵活”不了解,请保持原样。 在某些功能实施或错误修复期间,您下次可能会想到一个好主意。 第三方依赖性 这是迁移到Swift 3弄脏手后要检查的第一件事。 我想说,您越推迟迁移,就越有可能将所有依赖关系都迁移到Swift 3。 如果您过去不太幸运,选择了一些后来被废弃的库,那么,您可以从项目中删除它,也可以自己复本。 在GitHub上访问每个依赖项的页面,并在各个电子表格中记录有关Swift 3支持的注释,可以使您在该主题上花费一些精力。 Xcode 8 Swift迁移器工具 当您选择迁移时,Xcode会提供一个迁移助手。 不要使用助手的视图来查看和编辑更改。 相反,只需批准所有建议并通过您选择的git UI工具对其进行审核。 为什么? 好吧,您可以称我为宽松的人,但是当我查看并编辑80%的代码库时,Xcode 8突然崩溃了。 可悲的是,IDE没有存储更改的快照,因此我必须从头开始。 另外,如果您不太熟悉要迁移的代码,则可能不知道要根据新准则更改的API的所有用法。 底线:进行人工检查时,请使用git UI工具和Xcode 8。 全部构建! 接受迁移工具所做的更改后,立即尝试构建项目。 当然有一些错误! 默认情况下,Xcode在遇到构建错误时不会进行得太远。 在Xcode偏好设置中选择“出错后继续构建”。 我想再次强调这一步骤。 遍历构建并修复构建错误周期对于使项目启动和运行很重要。 Xcode 7.3.1回顾 Swift 3对iOS […]

斯威夫特游乐场1.6

全体的にSwift 4へ 概要 写すだけですが,今回のアップデートで 新しい”拡张现実”のチャレンジでは,ARKitを使って现実世界の中にByte(编注:マヨネーズみたいな生物の名前です)の仮想世界を出现させます ドからードからiPadのカメラにアクセスできるようになりました コード内のエラーの说明が一段とわかりやすくなりました ドでードでSwift 4とiOS 11 SKDを活用できます AppのAppと“コードを学ぼう1”のレッスンに,スペイン语(スペイン),イタリア语,オランダ语,繁体中国语,韩国语,スウェーデン语,タイ语,トルコ语,ポルトガル语(ブラジル)の新しい言语が追加されました となったそうです。 実张现実 iPadのOSをiOS11に上げないと使えません。iOS10ではこうなります。 iOS11にしても私のiPad mini 4thは対象外でした。残念。 スクリーンショットで气氛囲気だけ出しときます。 コード内のエラーの说明が一段とわかりやすくなりました 以前がどんなだったか覚えてない(&アップデートしたので古いのを确かめられない)ので违いが书けないのですが,良くなったそうです。以下はざっくりしたレポートです。 日本语 本家(?)のXcodeの方のメッセージは英语なので,この点はこっちの方が进化しています。 修正邦 上のような场合,修正邦タンを使うと一瞬で修正できます。 横スクロール 次のようなエラー表示内の横スクロールもあります。 スワイプで右を表示させるとこうなります。 表示する内容がどちらも是否要添加默认条款?なのでこの例だと利点がわかりにくいですがメッセージによってはうまいこと机能するような気がします。 关连する行の视覚エフェクト 面白いのが次のような复数のコードがからんだエラーのときです 修正邦タンの邻の矢印をタップすると,もう片方のエラーが膨らむアニメーションションが表示されます。これによって,そのエラーがどこの文と关连して発生しているのかわかります。 次のパターンでも同様の矢印が表示されます。 个人的に気になっていた部分はどうなったか? 数字の変数を代入するところで胜手に数字入力の小画面が出てきて画面下のキーboードが消える件 画面下のキーboードが胜手に现れたり消えたりするとわずらわしいので好きではないのですが,変わっていませんでした。表示しないための设定がどこかにあるんでしょうか? ついで 今回始めて気が付いたのですが,BGMはコード进行や曲の展开がはっきりしているものでした。

可选类型的扩展

嘿大家! 我想写这篇简短的文章,因为我喜欢使用这种技术,它并不是最明显的实现。 因此,如果您在Swift中工作了2分钟以上,那么您可能已经看到Optional了 。 有很多很棒的文章解释了这些东西是什么以及如何使用它们。 我不会在这里讨论。 我想说的是恐惧 表达式从“字符串”隐式强制转换 去任何’ 每次尝试打印Optional时出现的错误。 好的,这不是世界上最重要的用例,但是如果没有它,您的代码将被警告打乱,或者每次执行此操作时都必须将所有内容转换为Any类型。 所以下面的实现: let val:字符串? =无 // … print(val)//警告在这里生成 会成为 let val:字符串? =无 // … print(val as Any) 如果您有很多这样的事情,或者如果val的类型发生变化,那么这将成为一场噩梦。 因此,什么是优雅的修复程序,因为它绝对没有使用String(describing: val) ,这是Xcode中建议的修复程序。 我很高兴你问😁。 为了解决这个问题,让我们在Optional类型上编写一个扩展名,是的,这是完全可能的,而且非常酷! 让我们开始编写以下代码: 扩展名可选,其中Wrapped ==字符串{} 在上一个代码块中,我们扩展了Optional类型,其中Wrapped类型是String 。 Wrapped属性是使用Optional声明(Swift Generics)声明的泛型类型的标识符。 这意味着我们在此扩展中编写的任何代码仅可用于可选的字符串类型( String? )。 因此,让我们实现我们的扩展。 在下一个代码块中,我们将添加一个名为valueOrEmpty的新属性。 这是代码: 扩展名可选,其中Wrapped ==字符串{ var valueOrEmpty:字符串{ 守卫让自己解开=自我否则{ 返回“” } 退回包装 } […]

单元测试和使用旧版代码

关于编写好的软件以及当您想要添加或删除功能时如何重构代码库的文章很多,但是大多数现有文献在示例中都使用C或Java。 在这里,我将尝试展示iOS开发人员如何使用XCTest来帮助维护旧版Swift代码。 什么是旧代码? 旧版代码基本上是任何现有代码-不管它有多旧。 但是它越老,即使您写了它,也不太可能熟悉它。 并且您希望能够对其进行修改,并且不会破坏现有功能。 我们要达到什么目标? 有很多原因需要接触遗留代码,但是它们通常分为以下几类: 修正错误 由于业务规则的改变而改变行为 扩展功能以支持新功能 如果幸运的话,我们不需要进行任何重大更改即可执行上述任何操作,但是通常我们需要重构代码以实现我们的目标。 这可能很简单,例如花费几行代码并将其提取到一个单独的函数中,或者复杂到将一个对象分解为几个单独的对象,从而导致无论从何处调用旧代码,都需要对整个代码库进行更改。 问题是,我们不想引入任何错误,除非我们对应用程序非常熟悉,或者代码库非常简单,否则我们很可能会破坏某些东西。 单元测试是我们的朋友 在更改任何代码之前,重要的是要确保我们先了解应用程序的功能,并知道更改代码后是否已更改该功能。 为了让我演示单元测试如何提供帮助,让我们想象一下我们有一个应用程序可以在UILabel中显示人员的姓名和地址。 我们将有一个简单的Person对象和一个带有返回标签文本的单个函数的视图模型。 Itty Bitty Apps 总部位于澳大利亚墨尔本, 为大小客户提供了出色的移动和Mac软件。 这也使 揭示   -适用于iOS开发人员的功能强大的运行时视图调试。

如何在Xcode 10中制作Vapor 3 Swift Playground

当您想学习新东西时,更好的学习机会就是尝试它。 这来自我们的童年。 Vapor是Swift编程语言的框架,旨在简化服务器应用程序。 该框架使用现代的编程模式,并利用了Apple的低级非阻塞和事件驱动IO库,称为SwiftNIO。 SwiftNIO&Vapor使用并发编程技术以及诸如Future和Promise之类的抽象。 为了深入理解,我需要触摸它。 因为如此简单,我决定制作Swift游乐场! 让我们先安装Vapor。 您可以使用自己的文档进行此操作: macOS –蒸气安装 docs.vapor.codes SwiftNIO被安装为依赖项。 让我们创建沙盒项目: $ vapor new Sandbox $ cd Sandbox && vapor xcode vapor将创建初始项目结构,并将生成.xcodeproj文件。 最后,它将询问您是否打开Xcode。 点击“ y” 您必须看到类似以下内容: 看起来不太友善,是吗? 让我们打开Project Navigator: 现在,更清楚了什么是内幕。 让我们去游乐场玩吧。 首先从项目中创建Xcode工作区: 称之为沙箱。 现在,在Workspace内部但在Sandbox项目外部创建Playground。 最小化Sandbox项目文件夹,然后右键单击Project导航器中的任何空白点: 选择“新建文件”,然后在弹出的窗口中选择“空白操场”。 留下MyPlayground作为名称或选择自己的名称: 瞧! 现在我们必须导入我们的模块:Vapor和ORM,它们在此模板项目FluentSQLite中被调用。 在将模块导入操场之前,我们必须先构建它们。 我们开始做吧: Xcode将构建运行方案,该方案还将构建所有基础依赖项。 现在我们可以将所需的模块导入到我们的游乐场。 这样做并按Run(运行)—代码左侧的“播放箭头”: 底部有错误。 该怎么办? 导致此错误的原因是,依赖项中存在的C框架(例如CNIOAtomics)不在Xcode的Framework系统文件夹中。 Xcode保留有关头文件的信息,并根据此信息使其成为内部符号查找表。 该文件夹的位置是$(PLATFORM_DIR)/Developer/Library/Frameworks,在我的系统(Mojave 10.14.1)中,该文件夹代表/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks 我们必须为所有C模块依赖项创建伪造的框架文件夹。 让我们从CNIOAtomics开始: […]

适用于iOS应用程序开发人员的交互式游乐场

Xcode Playground是一个IDE,可为iPhone和iPad设备开发应用程序。 Playground最初是由Swift发行的,旨在成为一个进行代码实验的地方。 它提供了已开发代码和布局的交互式预览,而无需使用Interface Builder。 通过提供实时代码结果,Playground成为顶级ios开发人员的最爱,可以逐行“查看”您的代码在做什么。 如果您愿意避免创建Xcode项目的麻烦和精神开销,并且不必处理众多因素,例如设备类型和分辨率以及构建设置。 可以使用操场先决定是否继续执行核心思想来推迟此类决策。 为了使用Xcode Playground,您需要晚于Xcode 6安装最新的Xcode版本。安装该软件后,下面的屏幕将显示第一个选项,即“游乐场入门”,然后选择该选项到下一个屏幕以命名游乐场,将Platform设置为iOS ,然后保存游乐场。 好吧,这是在您开始使用Xcode之前的介绍,以下是在Xcode中构建应用程序时要参考的一些常用术语: UIKit是Apple的用户界面工具包。 它包含用于在整个应用程序中推动用户交互的项。 UI项示例包括按钮,文本框,导航控件等。 AppKit是Apple用于macOS的用户界面工具包。 像UIKit一样,它包含按钮,文本框等内容,尽管关注的是macOS而非iOS。 WatchKit是Apple用于watchOS的用户界面工具包。 尽管UIKit和AppKit有很多共同点,但WatchKit却大不相同-并且明显更简单。 Cocoa Touch是Apple广泛的iOS框架集合的常用名称。 它包括用于执行用户界面的UIKit,但是大多数人会说它还包括用于制作2D游戏的SpriteKit,用于制作3D游戏的SceneKit,用于地图的MapKit,用于绘图的Core Graphics,用于动画处理的Core Animation,等等。 Cocoa是用于macOS上的Apple框架集合的名称。 严格来说,它由用于用户界面的AppKit,用于基本功能的Foundation和用于对象图的Core Data组成,但是像Cocoa Touch一样,它通常表示“所有macOS开发”。 NeXTSTEP是由Steve Jobs创建的一家名为NeXT的公司创建的操作系统。 它被苹果公司收购,乔布斯又被公司控制,并将NeXTSTEP技术直接纳入苹果公司开发平台的核心。 iOS Simulator是Xcode附带的工具,其外观和工作原理几乎与真实的iPhone或iPad一样。 它使您无需使用真实设备即可非常快速地测试iOS应用。 游乐场的局限性 游乐场不能用于性能测试。 不支持用户交互。 不支持设备上执行。 无法使用您的应用或框架代码。 不支持自定义权利。 Xcode团队似乎致力于改善操场,因为集成了最新框架和库的新版IDE推出了。 以上只是在微型Swift测试环境中的漫步,您可以键入代码并立即查看结果。 要构建iOS应用,请与最佳应用开发者联系。