一个可选型的属性

2017-04-01
阅读 3 分钟
3k
有时候为了新增一个功能,会去修改你的 ViewController 。但代码总是环环相扣的,你会发现在 ViewController 中引入一个可选型的属性时,在某些情况下该属性会被赋值,而在另一些情况下它不会被赋值。

有序数组的一种实现

2017-03-31
阅读 6 分钟
3k
在上周的 Swift Talk 里,Florian 和 Chris 编写了一个有序数组类型 SortedArray:一个总是按照指定规则排序的数组。这很赞,因为它将多个不变性编码到了类型系统里。用户可以使用这个类型去取代普通的 数组 ,而且不用担心忘记手动排序数组。

自定义控件:利用 3D Touch 确认 Button 操作"

2017-03-22
阅读 8 分钟
2.2k
通过这个教程,我们会创建一个自定义的按钮,并且要求用户通过 3D Touch 操作进行确认。如果用户的设备不支持 3D Touch,控件对用户的处理也会回退到备选方案。

为什么不要在枚举和 Equatable 中使用 default case?

2017-03-21
阅读 3 分钟
2.1k
作者:Ole Begemann,原文链接,原文日期:2017-03-06译者:Cwift;校对:numbbbbb;定稿:CMB 假设你有一个 Swift 的枚举: {代码...} 你希望它遵守 Equatable 协议。由于该枚举具有关联值,必须手动添加,所以需要实现 == 函数: {代码...} 这里处理了参数类型相同的两种情况,比较类型不同时会执行 default case 并返...

语法的集合?协议可没那么简单

2017-03-10
阅读 4 分钟
1.5k
有一些人,比如 Xiaodi Wu 和 Dave Abrahams,提出了一些非常好的论据来反对这个观点。在这里我再次重复一次这些观点,因为我觉得相比这个具体的话题,他们所讨论的内容有着更加广泛的意义。

结构体与 NSCoding

2017-03-09
阅读 4 分钟
1.7k
要使用 NSCoding,必须遵循 NSObjectProtocol 这个类协议,因此结构体无法使用。如果我们想对某些数据进行编码,最简单的方式是将它们作为一个类来实现,并且继承自 NSObject。

为何 String.CharacterView 不是 MutableCollection

2017-03-06
阅读 3 分钟
2.6k
在 上一篇文章 中,我讨论了为什么 Set 和 Dictionary 不能遵守 MutableCollection 和 RangeReplaceableCollection。今天轮到 String.CharacterView 了。

在 Swift 应用里构造和修改 NSURL

2017-02-22
阅读 4 分钟
2.4k
许多应用程序都有访问文件的需求。也许是应用 bundle 或文件系统的文件,又或许是网上的资源。在代码里需要调用某些方法来指向这些文件。对于 Apple 平台而言,基本上只有两个选择:使用 String 或 NSURL。

Swift:漂亮的 print() Pt.2

2017-02-21
阅读 4 分钟
1.8k
在之前的文章中,我们讨论了在输出日志中使用 emojis 的好处,它可以帮助我们更好的去消化和吸收大量的信息,不过我提供的实现方式并不怎么样,没有足够多的例子供你将其应用在自己的代码中。

不是所有可变的集合都叫做 MutableCollection

2017-02-20
阅读 4 分钟
4k
Collection 协议是 Swift 集合类型的根基。除了 Collection,标准库还提供了另外四个协议,用来扩展集合类型的功能。这些协议改进了 Collection —— 遵守任何一个协议的对象也必须遵守 Collection。

枚举的非连续原始值

2017-02-18
阅读 1 分钟
2.3k
Brennan Stehling 近来发现了一个我一直不知道的 Swift 神奇特性。众所周知,可以创建一个这样的原始值 (raw value) 枚举:即每个枚举成员的原始值皆可以自动递增。

Swift 惯用语法

2017-02-17
阅读 4 分钟
3.3k
久而久之,Swift 发展出一种别具一格的专用语法——即一组与其他语言相差甚远的基本惯用语法 (core idioms)。许多来自 Objective-C、Ruby、Java、Python 等等语言的开发者纷纷投向 Swift 的麾下。数日前,Nicholas T Chambers 让我帮他来磨练这门新习得的语言。他通过将 Ruby 代码移植为 Swift 的方式,来构建自己基本的编...

请求行为

2017-02-16
阅读 7 分钟
2.2k
当触发网络请求时,通常会引发许多副作用。然而,副作用对于系统的可测试性来说就是一剂毒药,并且可能会因应用程序和请求的不同而出现差异性。如果我们创建一个系统用来容纳这些副作用的组合,就可以提高系统的可测试性和其他特性。

在 Swift 中使用 Objective-C 风格的异步 API

2017-02-15
阅读 3 分钟
2.4k
许多 Objective-C 风格的异步 API 会在它们的回调闭包中传入两个可选类型值:一个代表操作成功时方法的返回值,另一个代表操作失败时返回的错误值。

请求定位权限

2017-02-13
阅读 4 分钟
3.2k
在 iOS 中用户的位置信息被视为个人隐私,所以在获取时需要向用户请求权限。本篇教程将讲述向用户请求该权限的步骤。开发环境为 Xcode 8 Beta,运行环境为 iOS 10。

关于 Swift,我不喜欢的几点

2017-02-10
阅读 6 分钟
2.4k
在以前,我已经写过很多喜欢 Swift 的理由。但是今天,我想要写的是这门语言不足的地方。这是一个锱铢必较的问题,所以我将举例描述,去指出这门语言做的好的地方,做的不好的地方,以及其前景。

挑战:筛选关联值枚举数组

2017-02-09
阅读 2 分钟
1.7k
需要对数组进行筛选 (filter),挑选并创建只包含某种枚举值 (case) 的新数组。麻烦的是,Swift 没有一种类似  == 或 _= 的操作符,可以让我们忽略枚举的关联值:

底层结构

2017-02-08
阅读 2 分钟
1.6k
我经常观察一个类型的实例变量,这样我就可以更深入地理解这个类型设计的初衷。一旦你知晓该类型的底层结构,它的用法也就随之浮出水面了。反之亦然:如果你没看过一个对象内部成员的布局情况,那么不可能准确把握该对象的功能。这种情况对于苹果的闭源类型尤其明显。

可选型以及字符串插值

2017-02-07
阅读 3 分钟
2.3k
你遇到过这个问题吗?想要在 UI 中显示一个可选值或将其打印到控制台以便调试,但是你不喜欢可选值转成字符串的默认格式:Optional(…) 或 nil。比如:

使用键路径访问字典

2017-02-06
阅读 6 分钟
3.1k
在 Swift Talk episode 31 上,Chris 和 Florian 展示了一种针对 Swift 中可变的嵌套异构字典的解决方案,这种字典是 [String:Any] 类型的。这是一个有趣的讨论,我鼓励你看看原视频或者阅读这篇优秀的文字记录。

手把手教你解决 invalid inferred toolchain

2017-01-24
阅读 1 分钟
3.2k
你已经在你新的 Ubuntu 系统上安装好了 swiftenv,并用它安装了一个 Swift 的版本。但是当你在机器上运行 Swift 的代码时,却得到这样的提示: error: invalid inferred toolchain 。看起来是令人不愉快的。

Swift:漂亮的 print() Pt.1

2017-01-23
阅读 3 分钟
2.7k
自从 Swift 的 beta 版本诞生后,社区里那些富有探索精神的开发者就迫不及待地在 Swift 的学海中遨游,他们不遗余力地去探索 Swift 的潜力,同时交流分享他们从中得到的经验。

MapKit 使用介绍:大头针和图形渲染

2017-01-20
阅读 9 分钟
3.6k
最近 APP 中的地图功能变得越来越流行了。从优步到 Instagram ,再到我的新应用 peek ,地图功能在各种 APP 中都能见到。虽然地图很常见,但是往地图功能添加一些更复杂的功能还是有点挑战的。在这篇文章中,咱们就讨论下在 MapKit 中的大头针和图形渲染,MapKit 是苹果 iOS 系统中的地图库。你在 iOS 系统中看到的许多...

使用 Swift 3.0 操控日期

2017-01-19
阅读 3 分钟
2.4k
当你在想要 大规模重命名 时,一个附带的挑战就是要确保所有相关的文档都必须同步更新。比如,截至到 2016 年 9 月 20 日,DateFormatter 的文档依旧没有与版本统一,引用的是 Swift 2.3 风格的 API(译者注:现在是 2017年,文档依旧没有更新...)。随着时间的推移,这些疏漏毫无疑问都会被纠正,这里是一些使用 Date ...

使用 Swift 3 与 Xocde 8 创建条码与二维码扫描应用

2017-01-18
阅读 8 分钟
3.4k
那么,什么是二维码呢?我相信读者中的大多数都知道什么是二维码(译者注:我觉得应该是全部都知道吧)。以防还有读者没有听说过二维码,可以看一下上面这张图片(译者注:原文如此,并且原文中也没有图片)——那就是二维码。

XML 解析教程

2017-01-17
阅读 5 分钟
3.2k
本教程使用 NSXMLParser 对象对 xml 文件进行解析。解析结果由 Table View 展示。本教程在 Xcode 7.3.1 上基于 iOS 9.3 构建。 打开 Xcode 并且新建一个单视窗应用。名字就叫 IOS9XMLParserTutorial,组织名字和组织标识自己定。语言选 Swift,设备只选 iPhone。

Swift:UserDefaults 协议( Swift 视角下的泛字符串类型 API )

2017-01-16
阅读 7 分钟
3k
无论是从语言本身还是项目代码,Swift3 的革新无疑是一场“惊天海啸” ,一些读者可能正奋战在代码迁移的前线。但即使有如此之多的改动, Swift 中依旧存在许多基于 Foundation 框架,泛字符串类型的 API 。这些 API 完全没有问题,只是...

URL 强制解包带来的问题

2017-01-13
阅读 2 分钟
1.8k
让我先阐述一下撰写这篇文章的背景。Laptopmini 想要知道为什么下面这段代码无法完成编译。诚然,Swift 的错误提示尚存有改进的余地。简而言之:他需要将第二行和第三行代码进行互换,才能够完成编译。这就需要让这两个属性在引用 self 之前,完成初始化操作。

Swift 圣战:类型别名

2017-01-12
阅读 1 分钟
1.5k
Kyle Cardoza 留言给我:「Erica,当您必须处理指向不同类型的 OpaquePointer 值时,为 OpaquePointer 建立一个别名是否是糟糕的代码风格呢?我觉得类型别名让代码读起来更舒服……」。

Swift3 指导手册:基础篇

2017-01-11
阅读 9 分钟
3k
在 Swift 3 指导手册中,我们将聚焦如何帮助初学者从一个完完全全的新手到基本掌握 Swift 。这里会使用 Swift 3 来教学。我们编写这个指导的初衷是因为市面上的很多指导手册都已过时了,因此它就不适合仅仅以“ Swift3 有哪些新功能”来行文。我们找了几位有多门语言的编程经验的人士,来教你 Swift 语言的独特性以及如何...