在Swift中学习编程-第166天

很抱歉在100天内从此处删除。 我本来不是打算确切地下车100天,但是我花了大约这么长时间才完成我留在Udacity iOS开发人员Nanodegree中的所有项目。 现在,我仍然有职业发展项目,以便毕业于我的Nanodegree Plus。 我希望在今年年底之前完成这些课程,但是我也一直有时间拿到我的Nano学位(除非Udacity提供扩展)。 无论如何,让我们退后一步,解释一下我最近100天学到的知识。

“在地图上”项目是有关学习如何与服务器端API通信以将数据获取到iOS设备的全部内容。 这非常困难,因为您必须进行身份验证(使用用户名/密码登录),然后将JSON中的数据“转换”为数组或字典。 最难的概念是此过程的异步性质。 您真的不知道服务器响应并向您提供数据所需的时间和时间。 您可能还会向服务器发送多个请求,并且很有可能会收到与发送请求顺序不符的响应,因此必须使用完成处理程序使它们保持顺序。 最重要的是,您必须在后台队列中执行所有这些操作,以便在等待服务器中的数据时不会冻结UI。

之后的项目是虚拟游客。 该项目以我在“在地图上”中学到的知识为基础,添加了“核心数据”,这是一种在iOS设备上存储数据库数据的方法。 这确实很棘手,当我决定切换到Swift 3时,我遇到了很多困难。因为Apple对Core Data进行了许多更改,所以我没有感觉到任何课程材料(在Swift 2.2中)就像我完全迷路了。 我在互联网上搜索了所有资源,以找到有关Swift 3中Core Data的完整教程,最后得到了Ray Wenderlich团队的Swift 3 Core Data书。 RW团队的教学方式是示例性的,因此很容易看到事情的运作方式。 不利的一面(去年我经历了一些iOS教程时就经历了这种方式)是,它们给出了太多的答案,当您从自己的想法中找出来时,您学到的东西不多拥有。 但是这本书当时对我来说是完美的,因为它阐明了苹果公司对Core Data所做的所有更改,并且我可以继续努力。

核心数据最难的概念是并发性。 当您有多个项目试图同时访问(写入或读取)Core Data中的数据库时,会发生这种情况? 如果安装不正确,则很可能会导致随机崩溃。 我对此还没有一个很好的概念,但是我知道每次使用Core Data时,都会添加额外的参数来调试并发问题,并尝试在上下文中执行每个Core Data任务。 如果您不使用Core Data,那么最后一部分可能没有多大意义,但是我不了解该主题,无法全面解释该主题(如果我用枪指着我的头,我可能会更好地解释它,但是我非常希望您阅读这篇文章)。

这样就使我进入了最终项目。 没有更多的学习。 这是关于使用我所学到的一切并将其自己整合到应用程序中。 好吧,没有更多的学习部分是不正确的。 实际上,我最终学到了很多东西,因为当我整理我的应用程序时,最终使用了很多课堂上没有教过的东西(NSFetchedResultsController,UISegmentedControl,UIStepper,UIPickerView)。 我可能会在另一篇文章中介绍我的应用程序,因为我真的应该继续从事我的Nanodegree的职业发展部分,因为这是我注册Nanodegree Plus时的一项要求。 在这一点上,我很高兴我即将结束这一旅程,我将再发表一篇文章,让大家知道我是否完成了我的纳米学位。

PS只是对Apple Watch自动解锁功能的更新,结果证明我使用的是WatchOS 3的Beta版,而自动解锁在Beta中无法正常使用。 我很高兴地说“自动解锁”现在可以正常工作,但充其量只能在大约75%到85%的时间内工作。 尽管我的手表还有另一个更新,但这与我所使用的Apple的标准相去甚远。 它可能会改善自动解锁的性能,但是长达一个小时的更新(我记得有些时候去年才长达4个小时)令人费解,这是Apple真正应该做的事情。