模式匹配第三弹: 自定义的模式匹配和语法糖

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

模式匹配第二弹:元组,range 和类型

2016-04-27
阅读 4 分钟
2.5k
作者:Olivier Halligon,原文链接,原文日期:2015-03-30译者:小锅;校对:saitjr;定稿:shanks 在上一篇文章中,我们已经看过了使用 switch 来对枚举进行基本的模式匹配。那如果对除枚举外的其它类型使用 switch 来进行模式匹配会怎样呢? 对元组进行模式匹配 在 Swift 当中,switch 并不像 ObjC 一样只能对整型或枚...

模式匹配第一弹: switch, enums & where 子句

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

在 guard let 或 if let 多重解包中让元素强制可空

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

使用 Xcode 的 Target 区分开发和生产环境

2016-04-22
阅读 5 分钟
3.7k
一些初学者可能会好奇,为什么在开发应用的时候我们需要用两套隔离的数据库和环境。这是因为在你持续地开发应用或增加新特性的时候,可能希望将开发版本和已经存在的生产版本的应用进行区分。标准的开发实践是针对不同版本的软件使用不同的环境,而对我们来说,这个软件就是 iPhone 应用。一般来讲,开发版应用使用的数...

每周 Swift 社区问答:@objc

2016-04-21
阅读 2 分钟
2.9k
Swift 和 Objective-C 的互调这个话题很大,今天我们重点看看其中一个小的知识点:@objc的使用。 用法 在 Swift 代码中,使用@objc修饰后的类型,可以直接供 Objective-C 调用。可以使用@objc修饰的类型包括: 未嵌套的类 协议 非泛型枚举(仅限于原始值为整形的类型) 类和协议中的属性和方法 构造器和析构器 下标 我们...

2016 var-vs-let 的停火协定

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

#selector() 和响应链

2016-04-20
阅读 1 分钟
1.9k
作者:Dominik Hauser,原文链接,原文日期:2016-04-10译者:Lanford3_3;校对:Channe;定稿:Cee 因为 Swift 2.2 中 selector 的新语法,我用在「在 Target-Action 中使用响应链」中的方法产生了一个警告,让我们来修正它。 总管协议 首先我们加入一个协议: {代码...} 之后,我们可以给 Selector 添加一个 extension...

Swift 运算符重载简介

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

Swift 中 10 个震惊小伙伴的单行代码

2016-04-18
阅读 6 分钟
4.5k
几年前,函数式编程的复兴正值巅峰,一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红。很快地,一系列使用其他语言实现这些单行代码的文章也随之出现,比如 Haskell,Ruby,Groovy,Clojure,Python,C#,F#,CoffeeScript。

对比 attempt、try? 和 try!

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

我是否应该使用生成器(Generator)?

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

每周 Swift 社区问答:@available 和 #available

2016-04-14
阅读 2 分钟
3k
Swift 2.0 中,引入了可用性的概念。对于函数,类,协议等,可以使用@available声明这些类型的生命周期依赖于特定的平台和操作系统版本。而#available用在判断语句中(if, guard, while等),在不同的平台上做不同的逻辑。

Swift:使协议中的关联类型参数可读

2016-04-13
阅读 2 分钟
3.1k
作者:Natasha,原文链接,原文日期:2016-04-09译者:Crystal Sun;校对:小锅;定稿:shanks 我还在习惯 Swift 中的关联类型(Associated Type),尽管它们已经出现好一阵子了,我最初是从这篇文章 @alexisgallagher里开始理解它们的。 我很开心昨天能在 iOS 开发中用它们解决 iOS 开发中的一个常见问题:在 Swift 中对...

iOS9:预览特定的 UITableViewCell 视图

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

I ? Storyboards & Nibs

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

回顾 Swift 多平台移植进度 #2

2016-04-08
阅读 1 分钟
2.1k
自上个月以来,已有一些 Swift 平台移植方面的代码迁移到了 master 分支上。现在就让我们回顾一下二月里都发生了哪些事情吧,并且看看当前还有哪些正处于开发状态中。

回顾 Swift 多平台移植进度 #1

2016-04-07
阅读 2 分钟
3k
这么短的时间当中发生了很多事情。开源社区已经在全面发展这项语言了,他们为 Swift 的每个分支项目都贡献了大量的代码,他们甚至讨论了 Swift 的将来,并为之提出意见和建议。苹果公司非常欢迎开源社区的加入,而开源社区则积极回应了许多贡献和想法。

Swift 进化接受了三大提议

2016-04-06
阅读 2 分钟
2.1k
作者:Erica Sadun,原文链接,原文日期:2016-03-03译者:Crystal Sun;校对:shanks;定稿:Cee 今天,苹果接受了三大重要的内部驱动的提议(有些提议内容稍作了修改): SE-0005 将 Objective-C 的 API 更好地转换成 Swift SE-0006 将 API 指南添加到标准库里 SE-0023 API 设计指南 由 Swift 核心团队开发的,这三大...

Swift 2.1 函数类型转换:协变与逆变

2016-04-05
阅读 3 分钟
2.7k
这篇 Swift 2.1 相关的文章需要使用 Xcode 7.1 beta 或者更新的版本, 你可以通过 GitHub 或者是 zip 文件 来获取相关 playground 文件。

树莓派2 GPIO 和 SwiftyGPIO

2016-04-01
阅读 3 分钟
3k
和全球的开源项目开发者一起工作非常有趣并且可以从中获得很多经验。随着计算机设备和宽带成本逐渐降低,给全世界的人带来了新技术,来自不同文化、不同背景的开发者们走到一起努力合作,共同创造了不起的成就。

iOS9 UIStackView 简介

2016-03-31
阅读 5 分钟
4.6k
iOS9 新加入了一个非常易用的布局控件 UIStackView,它可以将一组 UIView 视图进行垂直或水平方向的排列,用来替换手工使用 Auto Layout 对视图进行布局。

Swift 中的位操作

2016-03-30
阅读 7 分钟
3.5k
但你很快就会发现这门语言及它的标准库总是奉行“安全第一”的原则,所以,相较于你过去的习惯,使用 Swift 对位以及不同的整型的处理需要更多的类型转换。这篇文章介绍了一些必须掌握的内容。

如何在 Swift 中高效地使用 Method Swizzling

2016-03-29
阅读 4 分钟
6.6k
(译者注:译者也写了一篇关于 Method Swizzling 的文章 Runtime 之 Method Swizzling,顺便写了两个小 demo 来对比 Objective-C 和 Swift 之间 Method Swizzling 的异同,示例代码传送门)

用 Swift 来写命令行程序

2016-03-28
阅读 9 分钟
3.4k
在上一个例子中,我们通过组合使用 popen 和 wget 命令来调用自然语言翻译服务,来实现像 Google 翻译那样的翻译功能。本文的程序会基于之前我们已经完成的工作来进行。但与之前每次执行都只能翻译一句话所不同的是,这次我们要实现一个具备交互功能的 shell 程序,来翻译在控制台输入的每一句话。像下面的截图一样:

“懒”点儿好

2016-03-25
阅读 6 分钟
3.3k
今天我们来看看怎样通过变懒la?y ?...来提高效率⚡️。具体点儿说,我们要聊一聊 lazy var、LazySequence 和喵星人?。

使用 SwiftPM 创建新的包

2016-03-24
阅读 2 分钟
1.8k
去年 11 月,我在 Swift 的 JIRA 中创建了一个 SwiftPM 的改进建议:SR-353,在 swift build 中,添加一个类似于 npm init 的包初始化命令,用来创建 Swift 包需要的所有目录和文件。这个提议创建之后不久,Bastian Rinsche 和 Tobias Landsberg 就实现了这个特性,而且 PR 被合并。Bastian 还写了一篇非常棒的文章介绍...

Swift 2.2 的新特性

2016-03-23
阅读 9 分钟
4.1k
Swift 2.2 随着 iOS 9.3 一同闪亮登场,相较于 Swift 2.1, 2.2 版本做出了许多调整,从其调整方向上我们也能一窥 Swift 3.0 的影子,以下内容主要来自于苹果 Swift 官方 Blog,接下来就让我们进入正题,一睹 Swift 2.2 的庐山真面目:

Xcode7 中用 Swift 做单元测试

2016-03-23
阅读 6 分钟
3.6k
每个 iOS 程序员都要时不时的为他们的 app 做 debug。除非你是那种超级大牛,否则你肯定体验过查了无数个小时的 bug 最后才发现那仅仅是个简单的语法错误时那种油然而生的绝望感。或者更糟:你根本就没发现那些 bug。无论你是编程新手,还是开发过很多 app 的老司机,例行的写写单元测试会让你的代码更可靠,更安全,更...

Swift 3.0:你的代码即将崩坏

2016-03-22
阅读 2 分钟
2.9k
语音语义发生了变化。这时你需要重构代码,典型例子就是 Swift 从 (..., $NSError) -> Result? 格式改为错误抛出。