作者:Soroush Khanlou,原文链接,原文日期:2015-12-17
译者:zltunes;校对:Channe;定稿:shanks

我写过许多关于让 ViewController 变得更轻量的文章,Model-View-ViewModel 是一种常用的可以实现该目的的设计模式。我觉得 MVVM 是一种反人类的设计模式,它使架构更加混乱而非清晰。View Model的命名很糟糕,它只是架构优化的权宜之计。对我们来说放弃这一模式反而更好。

阅读全文

作者:shanks

Swift 的列车已经缓缓驶向了 3.0 版本了。自从 Swift 开源以来,Swift 的语法点变更速度加快,苹果制定了一个很好的 Swift 全民参与策略,保证热心的贡献者都能参与到 Swift 的建设当中,同时苹果作为判官,也会把大家的意见在社区里面进行充分的讨论。并形成结论,然后把讨论后靠谱语法特性点,安排到合适的版本中实现。这个项目的名字叫: Swift Evolution。

阅读全文

作者:Jameson Quave,原文链接,原文日期:2016-02-11
译者:小袋子;校对:mmoaay;定稿:numbbbbb

移动应用设计是时尚的

移动应用设计正在飞速发展,随着“移动优先”的思想成为所有品类设计的口号,这一切也都成了设计的一个主要指标。因此,我认为有必要先回顾并分析一下现今的应用是如何设计的。在这里,我将剖析那些我认为确实给我们带来损失,并让我们的软件更糟糕的移动应用设计趋势。

移动应用的设计方式是非常典型的时尚周类型,目标用户几乎每天都在变化。一个月前还很酷的东西,相较今天就显得陈旧了,因此我使用“时尚”这个词来客观描述这个现实状况。在我们深入移动应用设计模式这个专业领域之前,让我们先浅谈一下时尚本身。

阅读全文

作者:Benedikt Terhechte,原文链接,原文日期:2016-04-28
译者:pucca601;校对:星夜暮晨;定稿:千叶知风

时过境迁,我发现现在很难在 Swift 社区当中,跟进所有那些让人感到万分兴奋的进展了,虽然我不知道其他人是不是一样的想法。现在社区当中有数以万计出色的 GitHub 项目、价值连城的会议记录、有教育意义的博文、富有洞见的 Twitter 讨论贴以及内容丰富的新闻周刊,您很难对这些新进展保持跟进。更糟的是,Swift 的范围也从 iOS / watchOS / tvOS / macOS 开发扩大到了 Linux 服务器开发,甚至连安卓开发都开始涉及到了。

阅读全文

作者:AppCoda,原文链接,原文日期:2016-04-16
译者:Crystal Sun;校对:numbbbbb;定稿:Channe

我之前写过这篇文章 Migrating a parse database to a self-host MongoDB instance,在这次的春季辅导教程中,我们看一下如何将 parse 服务器迁移到 Heroku 或 Amazon Web Service。

对于还不了解 Parse 之死的人来说,这意味着服务器(处理数据、与数据库互动、发送接收请求等待)需要迁移到其他地方了。Parse,后端即服务(BaaS),为开发者提供服务器和数据库的服务。然而,Parse 已在一月份关闭,官方建议,在 2017 年 1 月 28 日彻底停止服务之前,请迁移 Parse 应用。Parse 官方建议你先迁移数据库,然后在迁移服务器。本教程假定你已经完成了数据库的迁移,正如我们在上篇教程第一部分中所做的。

阅读全文

原文链接:https://swift.org/documentation/api-design-guidelines/

译者:Changkun Ou

2016-05-11 初稿
2016-05-12 初校

目录

译者注:

Argument 和 Parameter 两个词在很多文献中均翻译为参数,这是一个历史遗留问题。

但实际上 Argument 专用于 Actual Argument(实际参数,实参),Parameter 专用于 Formal Parameter(形式参数,形参)。

本译文在上下文没有歧义的情况下均翻译为参数,在其他情况下使用实参和形参来对 Argument 和 Parameter 加以区分。

进一步阅读ISO/IEC 9899 - 在这份标准中,第 3 页的 actual parameter 和第 6 页的 formal argument 两种说法均被弃用。

阅读全文

作者:Jameson Quave,原文链接,原文日期:2016-2-2
译者:Crystal Sun;校对:numbbbbb;定稿:千叶知风

不知道你是否听说,Facebook 要关闭 Parse 了。Parse 是一个后端云服务(BaaS),前不久刚刚被 Facebook 收购。很多开发者感到有些失望,甚至感觉被 Facebook 背叛,我在推特发了这张 Parse 被关闭前网站首页截屏图片,它能说明一切:

图片链接
— Jameson Quave (@jquave) January 29, 2016

不用我在这里额外强调,他们都在网站上说了。成千上万的开发者信任我们。可以从类似的描述中明白,为什么开发者觉得他们遭到了背叛。在明知 Facebook 会任意地关闭某项技术服务的情况下,还会有人使用 React Native、React JS、HHVM、Relay 等 Facebook 提供的技术服务吗?

阅读全文

作者:AppCoda,原文链接,原文日期:2016-03-16
译者:Crystal Sun;校对:numbbbbb;定稿:shanks

选择哪种数据持久化的方式,是我们在开发 App 时常常遇到的问题。我们有太多选择了:创建一个单独的文件、使用 CoreData 或者创建 SQLite 数据库。使用 SQLite 数据库有点麻烦,因为首先要先创建数据库,提前写好表和字段。此外,从编程的角度来看,数据的存储、更新、和获取都不是很容易的操作。

阅读全文

作者:Natasha,原文链接,原文日期:2016-03-29
译者:bestswifter;校对:shanks;定稿:Channe

别人一看到我的 Swift 代码,立刻就会问我为什么如此频繁的使用 extension。这是前几天在我写的另一篇文章中收到的评论:

我大量使用 extension 的主要目的是为了提高代码可读性。以下是我喜欢使用 extension 的场景,尽管 extension 并非是为这些场景设计的。

阅读全文

作者:AppCoda,原文链接,原文日期:2016-03-22
译者:Crystal Sun;校对:numbbbbb;定稿:Cee

看新闻我们也知道,比起历史上任何一个时刻,健身和健康在今天都更加重要。说起来也挺好笑的,我似乎记得几天前新闻也在说同样的事情,也许是因为年纪越来越大的缘故,我更需要健康和健身。不管怎么说,这是一个热门话题。随着技术的不断进步,手机应用和硬件在世界范围内都变得流行起来,这些都给日益流行的健身健康话题加入了新的元素。

HealthKit 是苹果公司的重要桥梁,把追踪的重要的健康数据同有健康意识的科技消费者、运动迷、平常使用 iPhone 的人连接了起来。这很酷,用户可以很容易的就追踪衡量一段时间内的健身和健康数据,除了意识到的好处之外,我们看到图标中向上走的曲线,就能给我们极大的鼓励,激励我们继续运动。

阅读全文

作者:MATTHEW MAHER,原文链接,原文日期:2015-11-12
译者:CoderAFI;校对:Cee;定稿:Channe

随着移动互联网快速发展,想要自己做一款用户喜欢的应用程序越来越困难。而且苹果提供的开发工具和资源也越发不能满足开发者在数据服务方面的需求。于是 BaaS 服务(Backend-as-a-Service)给开发者带来了新的选择。

谷歌的 Firebase 是目前最流行的 BaaS 服务。Firebase 在性能、易用性、可维护性方面做得都非常好。Firebase 的特色服务是实时同步的 JSON 结构数据库。这种数据库可以迅速感知数据变化并立马同步到其他的客户端和设备。换句话说,Firebase 同步功能快如闪电。

阅读全文

作者:Mike Ash,原文链接,原文日期:2016-03-04
译者:zltunes;校对:Cee;定稿:shanks

断言是一种非常有用的机制,它可以检查代码中的假设部分,确保错误能够被及时发现。今天我将探讨 Swift 中提供的断言调用以及它们的实现,这个话题是由读者 Matthew Young 提出的。

我不会花太多时间讨论一般意义上的断言是什么或者在哪里使用它们。本文将着眼于 Swift 中提供的断言机制以及一些实现的细节。如果你想要了解如何在代码中充分利用断言,可以阅读我以前的文章 Proper Use of Asserts(断言的正确使用)

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016-04-11
译者:CMB;校对:shanks;定稿:千叶知风

我最近发布的文章 《准备好迎接 3.0 API 变化》 得到了一些很有趣的反馈。最近发布了一些有关 Swift 3 提议的文章,特别是关于 SE-0005 , 这些文章中解释了在 Swift 中 ObjC APIs 是如何自动转换的,也说明了这些转换在 Swift 中使用 Cocoa 的影响。

阅读全文

作者:KHANLOU,原文链接,原文日期:2016-03-18
译者:Prayer;校对:shanks;定稿:千叶知风

在我正在做的一个项目中,有大量关于度量单位的处理。(或许我应该继续去推进项目进展而不是在这儿写这篇博客)

我总是觉得对度量单位的建模是一件很有意思的事情。比如说,时间单位,假设你有一个 API 接受一个时间作为参数,可能需要以秒作为单位(又或者是毫秒作为单位)但是,有的时候你有需要以小时为单位来表达时间,例如 2 小时。所以,为了避免魔数(magic number) (7200 两小时转换为秒为单位),你会使用 2 * 60 * 60 ,为了增加可读性还会在其中的操作符之间加上空格。

然而,7200 这个数字并没有什么实际意义。如果你对着这个数字看很长时间,拥有很好的数学计算功底的话,有可能你会猜到这个数字代表着两个小时包含的秒数。然而如果不是整数个小时换算成秒的话,你可能永远也猜不出来。

阅读全文

作者:Soroush Khanlou,原文链接,原文日期:2016-04-25
译者:walkingway;校对:numbbbbb;定稿:numbbbbb

Grand Central Dispatch 大中枢派发😂 或俗称 GCD 是一件极其强大的武器。它为你提供了很多底层工具(比如队列和信号量),你可以组合这些工具来实现自己想要的多线程效果。不幸的是,这些基于 C 的 API 晦涩难懂,此外将低级工具组合起来实现高抽象层级 API(译者注:类似于 NSOperation)也不是一件容易的事。在这篇文章中,我会教大家如何利用 GCD 提供的工具来实现高抽象层级的行为。英文原文

阅读全文