防止序列为空

2016-07-28
阅读 2 分钟
1.8k
昨天在 Swift-Users 有人提问如何防止序列(sequence)为空。这个问题来源于如何在断言(predicate)中测试一个序列,由此引发的问题是如果序列为空,会返回 true 来满足断言。

Swift 3 新特性

2016-07-27
阅读 9 分钟
3.2k
Apple 在 WWDC 上已将 Swift 3 整合进了 Xcode 8 beta 中,并会在今年晚些时候发布 Swift 3 的正式版。这是 Swift 在开源和支持 Mac OS X 与 Linux 之后的首个版本。如果你在去年 11 月关注了 Swift 进化史 和已经启动的 IBM 沙盒 项目,那你应该知道 Swift 确实改动很多。甚至可以确定你在 Xcode 8 上根本无法编译既有...

使用 Swift 创建简单的二维码扫描应用

2016-07-26
阅读 11 分钟
2.4k
排着长队等待结账的商店,帮助旅客记录包裹和航班信息的机场,帮助大型零售商处理大量无聊的存货清单,这些场景非常适合使用条码扫描器。此外,条码扫描器也能帮消费者进行智能购物和产品分类。既然它这么棒,不如我们在 iPhone 上做一个吧!

好与坏,Swift 语言面面观(二)

2016-07-25
阅读 4 分钟
2.5k
不久之前,在我写的好与坏,Swift面面观 Part1一文中,我介绍了一些关于在 Swift 里怎样去写出优秀代码的小技巧。在 Swift 发布到现在的两年里,我花费了很长时间去牢牢掌握最佳的实践方法。欲知详情,请看这篇文章:好与坏,Swift面面观 Part1.

Swift: 把 Struct 作为数据模型的注意事项

2016-07-22
阅读 2 分钟
4.7k
很高兴见到 Objective-C 的老司机对于 Swift 的新鲜语法结构和新思维方式感到如此兴奋。作为开发者,我们应该永远努力拓展我们的技能,并在新的范式出现的时候乐于改变我们的心态。

WWDC 2016:更加安全的 Swift 3.0

2016-07-21
阅读 5 分钟
2.6k
在 Swift 发布之后,Swift 的开发者一直在强调,安全性与可选择类型是 Swift 最为重要的特性之一。他们提供了一种'nil'的表示机制,并要求有一个明确的语法在可能为'nil'的实例上使用。

Swift 语言面面观(一)

2016-07-20
阅读 3 分钟
2.3k
在 WWDC 2014(苹果 2014 年开发者大会)发布的 Swift 编程语言,大约在一周内将迎来它的两周岁生日(译注:WWDC 2014 的时间是 2014-6-3)。当时听到这个消息,我们在工作室里兴奋地跳了起来,并从此投入到了 Swift 的怀抱。然而两年时间过去了,我依然在苦苦思索着怎样写出好的 Swift 代码。要知道 Objective-C 已经快...

在 Ubuntu 16.04 Xenial Xerus 上安装 Swift 3.0

2016-07-19
阅读 3 分钟
2.8k
我们对“让 Swift 3.0 在更多的 Linux 系统上运行”这件事充满了热情,因此我们开始在 Ubuntu 16.04,即 Xenial Xerus,X86 系统上构建 Swift 3.0。安装过程十分简单,只需要添加我们的 APT 仓库,并使用 apt-get 就可以了。二进制文件会被安装到 /opt/swift/swift-3.0 目录下,所以在安装 3.0 版本后需要更新 path 路径。...

详解 SiriKit - SiriKit 教程(Part 2)

2016-07-18
阅读 3 分钟
3.1k
为了让集成的 Siri 更有用,可以使用 INSendMessageIntentHandling 协议的回调方法增加信息内容。协议有以下可选方法:

伟大的空格分割符之争

2016-07-15
阅读 1 分钟
2k
很明显,后者赢了。为什么?因为符合正字法(orthography)的规则(定稿注:来源于希腊语中的正确(Ortho)和书写方式(Graphia),表示通用的社会性的文字表示规范。这里指约定俗成的代码规范。留白是一种美)。

Xcode 8:如何创建 iMessage 动图

2016-07-14
阅读 2 分钟
3.1k
这周末我终于有点空余时间来捣鼓一个有趣的业余项目了。我看到好友 @chiuki 做了一个叫做 Fit Cat 的 Android Watch 应用,我也想在我的 Apple Watch 上搞一个,@chiuki 同意了。

在 Swift 和 Objective-C 项目中使用 CocoaPods

2016-07-13
阅读 4 分钟
2.9k
CocoaPods——Swift 与 Objective-C 项目的依赖管理工具,iOS 开发者的必备技能。如果你没有任何 CocoaPods 经历,那么这篇短文就是为你而写。我们将会学到什么是 CocoaPods,为什么我们要使用它,还有怎样开始使用它!

Linux 上的一个 Swift 脚本示例

2016-07-12
阅读 3 分钟
2.2k
如果你在推特上关注了我们(@iachievedit)你就知道我们不仅做了很多 Swift 开源项目,还有做了一些操作系统和架构。我们决定做这个项目没有特别的原因,但是看着各个版本的 git 仓库最终整合一个工具感觉真是太棒了。

带有关联类型的枚举的原始值初始化构造器

2016-07-11
阅读 5 分钟
2.3k
在 Swift 中,枚举(Enums)是一种优雅的结构化信息的方式。有时候你会发现自己需要通过原始值(raw values)来构造枚举,因为这些值可能零星地存储在某些地方,比如 NSUserDefaults:

在实践中应用 RxSwift

2016-07-08
阅读 7 分钟
4.3k
本文上半部分将为您解释为什么在实际项目中为什么不要调用 onError 以及尽量不使用 Driver 。同时给出一种合理的解决方案,让我们仍然可以愉快的传递 Error ,并对 Value 进行处理。下半部分将介绍用函数式来精简我们的代码。

《重构与模式》Swift 版之参数对象

2016-07-07
阅读 4 分钟
2.3k
我最近在读《重构与模式》 。昨天(译注:原文日期的昨天),在我写描述了一个拥有多个参数的对象的《创建方法》时,想到了@modocache关于iOS API 设计中的 Swift 模式超棒的演讲,尤其是关于参数对象部分。我第一次看的时候获益匪浅,因此我希望记录下来。

三叠纪公园:Swift 的进化史

2016-07-06
阅读 3 分钟
2.8k
为类型重新声明别名时有一些限制条件。例如在存放字符串的词典中,主键必须实现 hashable 协议才能够使用。Swift 的编译器会在不满足限制条件时提供一些反馈:

是否应该使用可选映射?

2016-07-05
阅读 2 分钟
1.6k
这种方法使用了可选映射(Optional mapping)(译者注:关于 map 和 flatMap 的区别,可以参考之前的文章:Swift:map 和 flatMap 基础入门,返回一个非可选类型,即是 .Some(...) 而不是 .None。这很简单并且使用了一个单独的绑定状态的查询。

混淆 API 密钥

2016-07-04
阅读 3 分钟
4.3k
密钥,或者说「凭证」,是在使用 REST API 时难免会碰到的一件事情。当你注册了 Amplitude 后,你会得到一个密钥用来唯一识别你的应用。若你使用的是 Aeris Weather 的 API,会得到一个 ID 和密码。如果你要在 iOS 应用里调用这些 API,则需要把这些 API 密钥放在某处。在之前的一篇文章中我们整理了如何在属性列表文件...

Linux 下使用 Swift MQTT

2016-07-01
阅读 10 分钟
3.8k
在过去几年的时间里,我一直从事物联网(Internet of Things,IoT)软件的开发项目。在这段时间里面,我学到了不少关于和云端通信传感以及遥感的协议方案。在物联网领域最通用的方案是 MQTT ,一个轻量级的协议,用于发布消息给频道,同时提供对频道的订阅功能。这种模式通常被称为「发布──订阅」模式。

合理的 Cocoa 和 Cocoa Touch 默认值

2016-06-30
阅读 2 分钟
3.2k
许多 Cocoa 和 Cocoa Touch 的函数调用都是很死板的。几乎每个调用都采用普遍的参数值。为什么不利用 Swift 默认方法来代替?我们可以对这种函数进行简化:

使用 Xcode 8 为 iMessage 创建表情包插件

2016-06-29
阅读 4 分钟
6.1k
WWDC 2016 上最重磅的消息之一就是在 iOS 10 中引入了 Message 框架。开发者现在可以为苹果内置的 Messages 应用开发扩展啦。通过开发一个应用扩展,你可以让用户跟应用在 Messages 应用中交互。例如,你可以开发一个 Message Sticker Extension 允许用户跟朋友交流时发送表情贴纸。如果你已经开发了一个图片编辑的应用...

使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程(Part 1)

2016-06-28
阅读 6 分钟
3.4k
除非你想使用命令行编译,使用 Swift 3.0 的工具链并不需要对项目做任何改变。如果你想的话,打开 Xcode-beta,然后从顶部菜单栏中选择 Xcode > Preferences,接着选择 Location,在页面的底部,你会看到「Command Line Tool」这行设置,请在这里选择 Xcode 8.0。

《重构与模式》 Swift 版之创建方法

2016-06-27
阅读 4 分钟
1.6k
正如上个月在几个会议上我所讲的那样,《重构与模式》 这本书被多次提及,特别是在我喜欢的研讨会上。最终我还是读了一小部分(至少是在 WWDC 大会发布后的疯狂情绪高涨之前),并且我希望能够通过将书中的模式(pattern)记录下来,以供将来参考。我还发现,通过把书中的 Java 代码翻译成 Swift,我能更好地记住这些知...

今年 WWDC 大会有哪些新技术?

2016-06-24
阅读 4 分钟
3.2k
好吧,好悲伤,我今年没能参加 WWDC 大会 ?,只能看视频 ? 和 Twitter。我打赌你们肯定都看了发布会的重要内容(至少看了 keynote)和各个平台的新动态 ?。不过你知道那些悄悄加进去的新 API 吗??

Xcode 扩展

2016-06-23
阅读 3 分钟
3.2k
Xcode 8 现在开始支持一套官方的扩展 API。第一个支持的扩展类型就是源码编辑器的扩展(虽然很可能不是最后一个)。另一方面, Xcode 8 采用了系统完整性保护功能(即 SIP,System Integrity Protection)。 这意味着想要将代码注入到 Xcode 进程已经不可能了,并且 Alcatraz 的业务也关闭了。

初学者应该先学什么:TDD、Swift 还是函数式?

2016-06-22
阅读 2 分钟
2.4k
作者:Dominik Hauser,原文链接,原文日期:2015/04/19译者:小锅;校对:Channe;定稿:numbbbbb 昨天我收到一个问题,作为一个 Swift 初学者应该先学什么。下面是原问题: 我有一些疑惑,TDD(测试驱动开发)是否值得花时间学习,或者我应该把时间花在学习 Swift 以及函数式编程上? 当然,我的观点会有所倾向,因为...

亲爱的 Erica:Swift 3 有哪些最重大最出色的改变?

2016-06-21
阅读 2 分钟
1.8k
亲爱的埃丽卡:“对于还没追随最新进展的人来讲,你认为 Swift 3 将会有哪些最重大或最出色的改变?说实话,我有点失望。相对于 Swift 1 到 2 的改变(aka 协议扩展),给我的感觉就像是虽然有重大的改变,但不是那种能改变你如何设计一个程序的”

SE-0005 更好的把Objective-C APIs 转换成 Swift 版本

2016-06-20
阅读 14 分钟
2.8k
译者:泊学 提交 review 前必读 做为下面三份文档的一部分,它们的内容是彼此关联的: SE-0023 API设计指南 SE-0006 在标准库中应用设计指南 SE-0005 更好的把Objective-C APIs转换成Swift版本 这三份文档的内容是相互关联的(例如:标准库中一个 API 的调整和某个 API guideline 是对应的,或根据某条设计指南制定的 Cl...

Swift 结构体何时使用 mutating 函数

2016-06-17
阅读 3 分钟
4.1k
Swift 最棒的特点之一就是它内置了对整体结构的不可变性的支持,这使得我们的代码更加整洁、安全(关于这个话题,如果还没看过这篇文章,那么强烈推荐给你)。