切片职责

2016-11-18
阅读 3 分钟
2.2k
重构是一个持续性的过程。然而,在频繁的重构过程中还需要保证开发的功能可用。如果不能保证,代码就不能被定期部署,这会使得你的代码与团队中其他人的代码保持同步变得更加困难。

可选型的非逃逸闭包

2016-11-15
阅读 4 分钟
3.3k
Swift 的闭包分为 逃逸 与 非逃逸 两种。一个接受逃逸闭包作为参数的函数,逃逸闭包(可能)会在函数返回之后才被调用————也就是说,闭包逃离了函数的作用域。

老司机带你深入浅出 Collection

2016-11-10
阅读 4 分钟
2.8k
本文摘自即将出新版的 Swift 进阶(Advanced Swift)一书中的集合协议(Collection Protocols)章节(稍作修改以适合博客文章)。我和 Chris Eidhof 已经基本完成为本书更新到 Swift 3 的工作,很快可以面世。

构建一个 iOS 和 watchOS 均可用的跨平台框架

2016-11-07
阅读 1 分钟
1.8k
这个 try! Swift app 可以在 iOS 和 watchOS 上运行,我打算拓展它,从而支持 extension,并且可能增加一些与 iMessage 相关的功能。也许我最重的目标是打造一个 tvOS 应用,可以在我的会议室操控电视显示器。

CALayer 新手指南

2016-11-02
阅读 5 分钟
3.7k
欢迎!这篇文章将教你一项 iOS 中的关键技术:图层(layer)。你可能已经知道了 iOS 中的视图,但你可能不知道每一个独立的视图背后都有称为图层的东西。图层是 Core Animation 框架中的内容。

将可选类型转换为错误抛出

2016-10-31
阅读 2 分钟
1.7k
作者:Erica Sadun,原文链接,原文日期:2016-10-07译者:wiilen;校对:Cee;定稿:CMB Soroush Khanlou 曾写道:「很多时候我希望可选类型并不存在,“结果” 就只是 “结果”」。 他给了个例子: {代码...} 我对它进行了一些改进: {代码...} 两者之间最明显的差别在于我的错误是「Nil return at playground13.swift:24...

在 ARMv7 的设备上编译 Swift 3.0

2016-10-27
阅读 3 分钟
2.8k
编者注: 此文是我们上一篇在 BeagleBone Black 或 Raspberry Pi 3 上编译 Swift 3.0 的续篇,这篇文章使用了由 Swift ARM 组织搭建的仓库。

睿智的日期扩展

2016-10-26
阅读 2 分钟
1.6k
为了找到两个日期之间的时间间隔,需要调用 dateComponents(_:, from: , to:) 方法,并传入你要使用的单位。这个方法将会返回一个 DateComponents 实例,通过 .day 这个成员(property),你可以得知传入的两个日期之间相差的天数。

Swift 中的选项集合

2016-10-25
阅读 3 分钟
4.4k
对于位掩码,Swift 给出的方案是:选项集合(option sets)。在 C 和 Objective-C 中,通常的做法是将一个布尔值选项集合表示为一系列值为 2 的整数次幂的枚举成员。之后就可以使用位掩码来选择想要的选项了。举例来说,NSString 定义了一个名为 NSStringCompareOptions 的枚举以表示字符串比较选项:

MQTT 的遗愿消息

2016-10-24
阅读 3 分钟
9k
在这篇文章里,我们将着眼在 MQTT 的遗愿消息。一般是连接着代理程序的客户端预定义好 LWT(Last Will and Testament)的。如果客户端异常地断开连接,代理程序(the broker)将会广播 LWT 消息到所有订阅者的客户端中。

与服务器无关的移动端分析

2016-10-21
阅读 8 分钟
2.4k
移动应用分析是指捕获并分析用户在使用应用时产生的用户行为。当然,完整的应用分析包括了操作系统、桌面应用、web应用等等,移动应用分析只是其中的一个分支。直到今年早些时候,Parse 还是一个流行的云平台,用于捕获和显示移动应用程序的使用数据。

Swift 中代理方法的命名方式

2016-10-20
阅读 3 分钟
3.3k
可以说 Swift 是 Objective-C 的后继之人,毕竟也算是师出同门。但是他们语法看来不像,用起来也不像,给人的感觉也不一样。有些在 Objective-C 上用得好端端的案例,在 Swift 上却看起来怪怪的,如方法命名。在 Objective-C 中,方法名尽量完整:

如何在 watchOS 中复用分页界面控制器

2016-10-19
阅读 3 分钟
3.2k
WatchOS 目前并不是很支持动态代码。当你用一个 storyboard 来构建它的界面,即使所有的这些界面元素非常相似,还是必须把所有的界面控制器都放进去。比如下面这个关于意大利食物的 Apple Watch 的应用。

使用幽灵类型的Measurements和Units,第四部分

2016-10-18
阅读 10 分钟
2.4k
我之前撰写了关于标准库里新的度量值的短系列,此文是该系列的额外之作。虽然我很喜欢苹果的 API ,但我觉得探索同一问题的不同解决方案也很有意思。特别是这个问题,纯 Swift 设计是否能优于苹果的接口呢,因为苹果的接口考虑了 Objective-C 的兼容性问题。

使用 Swift 3.0 操作 MySQL 数据库

2016-10-17
阅读 6 分钟
4.4k
如果你阅读过本主其他的 Swift 文章,你会发现我们是 Swift 服务器端开发的忠实拥护者。今天我们将继续研究这个主题,使用 Vapor 封装的 MySQL wrapper 来操作 MySQL 数据库。

Data 解析 Doom 的 WAD 文件

2016-10-12
阅读 11 分钟
3.6k
Swift 3 带来了许多大大小小的变化。其中一个是为常见的 Foundation 引用类型(例如将 NSData 封装成 Data ,将 NSDate 封装成 Date)添加值类型的封装。这些新类型除了改变了内存行为和名字以外,在方法上也与对应的引用类型有所区别 1。 从更换新方法名这类小改动,到完全去掉某一功能这种大改动,我们需要一些时间去...

Swift 扩展「可以」添加存储属性

2016-10-11
阅读 2 分钟
3.4k
好吧,其实我标题党了:Swift 扩展只能添加计算属性。然而如果你愿意用 Objective-C 的关联对象,你可以在 Swift 中做一些同样有趣的事。有很多的模板可供选择,然而如果你用这些太过显然的方式,你也就牺牲了类型安全。我们可以做得更好吗?

Swift 关联类型

2016-10-10
阅读 6 分钟
3k
作者:Russ Bishop,原文链接,原文日期:2015-01-05译者:靛青K;校对:shanks;定稿:CMB 我想要一个关联类型的圣诞礼物 关联类型系列文章 Swift 关联类型 Swift 关联类型,续 Swift :为什么选择关联类型 有时候我认为类型理论是故意弄的很复杂,以及所有的那些函数式编程追随者都只是胡说八道,仿佛他们理解了其中的...

使用 iOS 10 的 Speech 框架构建语音转文本应用

2016-10-09
阅读 8 分钟
4.3k
在 2016 年的 WWDC 上,Apple 介绍了一个十分有用的语音识别 API,那就是 Speech 框架。事实上,Siri 的语音识别正是由 Speech Kit 提供支持。就目前来说,可用的语音识别框架并非没有,但是它们要么太贵,要么不够好。在本教程中,我将会向你演示如何使用 Speech Kit 来创建一个像 Siri 一样的应用来进行语音到文本的转...

Sequence 带来的更多乐趣

2016-10-08
阅读 1 分钟
1.4k
我试图通过下面几步,通过最少的数据复制,高效地创建一个字节数组 创建一个空的字节数组。 在数组中预留充足的空间。 使用可变指针去做数组的数据填充。 只有数组被填充之后,才能知道它的实际大小。 我想要设置数组的大小为它被填充的实际大小。 我还没有找到任何有效的方法去完成最后一步。有办法去这么做吗?

Measurements 和 Units,第三部分

2016-09-29
阅读 6 分钟
2.5k
作者:Ole Begemann,原文链接,原文日期:2016/07/29译者:钟颖;校对:小铁匠Linus;定稿:CMB 更新:2016-08-02 已将代码更新至 Xcode 8 Beta 4 本系列其他文章: (1) Measurements 和 Units 概览 (2) 乘法和除法 (3) 内容提炼(本文) (4) 幽灵类型 Swift 中 Measurements 和 Units 的系列文章中,仍然有一些收尾工...

转换流

2016-09-28
阅读 3 分钟
2.6k
我在很多地方都表达了我对流的喜爱。我在 Swift Cookbook 中介绍了一些。现在,我将通过 Pearson 的内容更新计划更新 Swift 3 的相关内容,正好我有一些要说的。我想在文章中添加一些有趣的新配方。

Swift 关联类型

2016-09-27
阅读 6 分钟
2.1k
作者:Russ Bishop,原文链接,原文日期:2015-01-05译者:靛青K;校对:shanks;定稿:Cee 我想要一个关联类型的圣诞礼物 关联类型系列文章 Swift 关联类型 Swift 关联类型(续) Swift:为什么选择关联类型 有时候我认为类型理论是故意弄的很复杂,以及所有的那些函数式编程追随者都只是胡说八道,仿佛他们理解了其中...

UIStoryboard:和枚举、协议扩展、泛型一起使用更安全

2016-09-26
阅读 6 分钟
2.7k
看完这篇文章后我非常惊叹,因为不需要依赖继承,只需要协议扩展和泛型就可以非常容易的实现自定义的行为。自从 WWDC15,我们已经听到关于 Swift 如何是一门面向协议的语言,而我只是一知半解,如果你懂我的意思的话。而就在此时我终于明白他们在讲的是什么了。

Swift:让人眼前一亮的初始化方式

2016-09-23
阅读 4 分钟
4.5k
作者:Natasha The Robot,原文链接,原文日期:2016/05/25译者:haolloyin;校对:saitjr;定稿:CMB 有条传播得很广的 tweet 讲到用位置参数(positional references)来初始化 Swift 常量: 原始代码见这个 gist(译注:原 gist 代码缩进太乱,搬运过来整理如下): {代码...} 由于这条 tweet 太简短,而且没有像我预...

在 Foundation 框架中的度量值和单位

2016-09-22
阅读 5 分钟
2.9k
作者:Ole Begemann,原文链接,原文日期:2016-07-28译者:粉红星云;校对:saitjr;定稿:CMB 文章更新日志: 2016/06/30 增加了一个“不足之处”小节,主要关于语法冗长。还有很少一部分内容的重写。 2016/08/02 把代码更新到 Xcode 8 beta 4 版本的。 这个系列的其他文章: 在 Foundation 框架中的度量值和单位(本篇文...

整理单个 if 条件的使用方法

2016-09-21
阅读 2 分钟
1.1k
我尝试打破这个模式是因为有个更简单的方式来实现,那就是用 if case 来代替 switch。只有一种 case 需要考虑,默认情况下不需要做任何操作。

Swift: 带有关联类型的协议是什么样的?

2016-09-20
阅读 3 分钟
2.1k
最近我做了一个关于带有关联类型的协议(PATs, Protocols with Associated Types)的演讲,我本来还觉得观众对这个已经耳熟能详了,但事实却相反。

树莓派 2 和 3 上的 Swift 3.0

2016-09-19
阅读 5 分钟
2.7k
当前,有许多人正在努力将 Swift 3.0 引入到基于 ARM 的系统中。通过本文你将了解如何在运行 Ubuntu 16 (Xenial Xerus) 的树莓派 2 或树莓派 3 上构建并使用 Swift 3.0。不过,我们暂时还没有对它在 Raspbian 系统上的可用性进行测试 (看起来并不可以)。

代码 Swift 化的挑战

2016-09-18
阅读 1 分钟
2.3k
今天的挑战题出自 Swift Users 邮件组的 Adriano Ferreira 。他的出发点是想要简化链式调用,但是很多情况下,想要使代码更 Swifter ,仅仅依靠看起来漂亮的链式语法是不够的。