Hi,SwiftGG 翻译组启用了新的域名:swiftgg.team今后翻译组的各项活动将会在新域名下开展,不要错过哦!

作者:Erica Sadun,原文链接,原文日期:2016-04-08
译者:zltunes;校对:numbbbbb;定稿:numbbbbb

据 Chris Lattner 所说,即将发布的 Swift 3 将在我们熟悉的 Cocoa 和 CocoaTouch 上做出重大改变。

在 Swift 3 中, .blackColor() 变成了 .black()

这一变化包含在将 Objective-C API 转化成 Swift 的提案 SE-0005 中。由于属性名结尾的单词和属性类型已经包含了足够的信息,因此可以删掉 Color

class func darkGrayColor() -> UIColor
// 因此
foregroundColor = .darkGrayColor()
// 变成了
foregroundColor = .darkGray()

阅读全文

作者:GABRIEL THEODOROPOULOS,原文链接,原文日期:2016-04-12
译者:小铁匠Linus;校对:walkingway;定稿:shanks

在 iOS SDK 中可以发现很多不是很有名的框架或者库。这些框架或库大多数都可以为你节省很多时间,同时也证明它们自己的价值。其中,有一个叫 Quick Look Framework 的框架。即使你之前可能没有听说过它,但是你看到它的名字也就大概知道它的用途了;它可以为应用提供文档预览的功能。

阅读全文

作者:Olivier Halligon,原文链接,原文日期:2015-04-24
译者:walkingway;校对:小锅;定稿:numbbbbb

在模式匹配系列文章的第一弹第二弹中,我们已经看到关于 switch 搭配很多类型的用法,包括元组(tuples),范围(Range),字符串(String),符号(Character)和一些其他类型。但是假如我们使用自定义的类型和模式匹配,又能擦出怎样的火花呢?

阅读全文

作者:Olivier Halligon,原文链接,原文日期:2016-03-27
译者:walkingway;校对:小锅;定稿:shanks

从简单的 switch 到复杂的表达式、Swift 中的模式匹配可以变得相当强大。今天开始我们来探索一下 switch 炫酷的使用技巧,稍后一系列文章会更进一步,为大家带来更高级的模式匹配技法。

本文作为模式匹配的第一篇介绍文章,旨在抛砖引玉。

阅读全文

作者:BENEDIKT TERHECHTE,原文链接,原文日期:2016-04-14
译者:星夜暮晨;校对:numbbbbb;定稿:千叶知风

我非常喜欢在 guard 或者 let 语句中对可空值进行多重解包 (multi-unwrapping),并且也喜欢使用附加的 where 从句。您可以在我之前的文章中看到相关介绍。然而,有些时候我会碰到这样一种情况,也就是在多重解包当中,当我调用的某个函数不返回可空值(或者使用数组下标语法获取数组元素)的时候,会出现问题。

阅读全文

作者:Eugene Trapeznikov,原文链接,原文日期:2016-01-18
译者:小锅;校对:Channe;定稿:numbbbbb

一些初学者可能会好奇,为什么在开发应用的时候我们需要用两套隔离的数据库和环境。这是因为在你持续地开发应用或增加新特性的时候,可能希望将开发版本和已经存在的生产版本的应用进行区分。标准的开发实践是针对不同版本的软件使用不同的环境,而对我们来说,这个软件就是 iPhone 应用。一般来讲,开发版应用使用的数据库(或其它系统,比如说统计分析系统)应该与生产版应用进行区分。在测试或者开发环境中,我们经常使用到类似 “test comment”, “argharghargh” 和 “one more test comment” 这样的测试数据。很显然,我们并不想让真实的用户看到这样的信息。如果应用使用了统计分析系统,在测试阶段我们可能会发送成千上万次的统计事件。我们当然也不想让这样的数据跟真实的统计数据混在一起。这就是为什么我们应该区分开发环境和生产环境。

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016-01-29
译者:walkingway;校对:Cee;定稿:小锅

在 Swift 开源之前,苹果在其语言进化中 SE-0003 将 var 形式的函数参数进行了移除,并且模式匹配将正式出现在 Swift 3.0 中。

自那以后,Swift 社区一遍又一遍地反对这个决定,尤其是那些在 case 模式匹配以及 if/guard/for 语句中使用了 var 的人们。

阅读全文

作者:COSMIN PUPĂZĂ,原文链接,原文日期:2016-03-29
译者:zltunes;校对:shanks;定稿:小锅

在任何一门计算机编程语言中,运算符重载都是非常强大的特性之一,因此苹果决定为 Swift 也提供这一机制。然而,”能力越强责任越大”。利用运算符重载你很容易实现一些奇怪的场景,例如用减法运算符实现两数相加,或者用乘法运算符实现两数相除,但这显然都不是你希望出现的。

好了,闲话少叙 —— 让我们看看运算符重载究竟是怎么一回事。

阅读全文

作者:uraimo,原文链接,原文日期:2016-01-06
译者:bestswifter;校对:numbbbbb;定稿:小锅

几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红。很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 HaskellRubyGroovyClojurePythonC#F#CoffeeScript

我们永远无法得知有多少人在社交聚会中对这些单行代码留下了深刻的印象,但根据我的猜测,越复杂的例子越能激励我们学习更多函数式编程的知识,至少对外行人来说是这样。

通过使用单行代码完成同样的 10 个练习,我们来看看 Swift 和其他语言之间的较量。在这个过程中,你也许还能学到一些有趣的东西(参见 #6 和 #10)。

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016-03-15
译者:星夜暮晨;校对:numbbbbb;定稿:CMB

在 Swift 中,try? 关键字将一个可能会抛出错误的调用转变为一个可选值。它会返回成功值 (.some(T))或 nil (.none)。使用 try? 允许您在 guard 语句中使用会抛出错误的代码,还允许您中断错误处理链并离开当前作用域,然后进入专门用于处理成功状态闭包的条件绑定当中。

try? 有其优缺点。它允许您创建行为可预见的代码,尤其是在结束闭包和 Playground 当中,但是忽视错误对于开发者来说往往是不可取的。

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016-03-17
译者:Lanford3_3;校对:shanks;定稿:小锅

我面临着这样的情况:我要实现一个无限的序列,它不断地来回生成区间 [min, max] 中的整数,所以最初我想的是,“让我弄个生成器(Generator)来搞定它吧”。(我并不是想讨论这个生成器写得好不好,我只想知道在这里我是不是应该使用生成器。)

阅读全文

作者:Natasha,原文链接,原文日期:2016-04-09
译者:Crystal Sun;校对:小锅;定稿:shanks

我还在习惯 Swift 中的关联类型(Associated Type),尽管它们已经出现好一阵子了,我最初是从这篇文章 @alexisgallagher里开始理解它们的。

我很开心昨天能在 iOS 开发中用它们解决 iOS 开发中的一个常见问题:在 Swift 中对使用 Storyboard 和 Segue 的 View Controller 进行依赖注入

阅读全文

作者:Natasha,原文链接,原文日期:2016-02-13
译者:Prayer;校对:小锅;定稿:shanks

在过去的几天中,我一直忙于开发 try! Swift 会议的官方 App(只剩两周半的时间了,我的天哪😱)!项目中一大亮点就是,我要实现在 app 中使用 3D Touch 来支持演讲者和展示的内容的弹窗预览(Peek & Pop)。幸运的是,@allonsykraken的博文Peek & Pop Spirit Guide让这个任务完成起来比较简单,为 table view 主视图添加 3D Touch 仅仅花费了几分钟时间就搞定了。

阅读全文

作者:Natasha,原文链接,原文日期:2016/03/27
译者:saitjr;校对:小锅;定稿:千叶知风

@helenvholmes@tryswiftconf 中谈到了一个我很感兴趣的话题(其实每个话题我都很感兴趣)—— 设计师怎样入门开发。当然从 Storyboard 入手是显而易见的。但这一见解却在开发者之间引起了很大的争议。

事实上,我并没有参与整个争论的过程。Interface Builder 存在一些弊端吗?当然,但是以我的经验来看,利还是远大于弊的。而且这并不止关系到设计师怎样入门,而是所有人应该怎么入门。Interface Builder 可以使我们整个项目代码更易懂。

阅读全文