我们都直到,第三方输入法比如搜狗输入法有个经典的手势操作——在键盘上左右划动即可移动光标。而这个功能我自己也十分的常用,所以,我想要自己来实现它。
首先我想到的就是 UISwipeGestureRecognizer ,不过结果可想而知,划动一次只能移动一格光标,这可不是我想要[……]
我们都直到,第三方输入法比如搜狗输入法有个经典的手势操作——在键盘上左右划动即可移动光标。而这个功能我自己也十分的常用,所以,我想要自己来实现它。
首先我想到的就是 UISwipeGestureRecognizer ,不过结果可想而知,划动一次只能移动一格光标,这可不是我想要[……]
在一开始,Swift 里并没有提供正则表达式的支持,所以我们只能自己来封装,比如说写一个结构体,像这样:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
struct MyRegex { let regex: NSRegularExpression? init(_ pattern: String) { regex = try? NSRegularExpression(pattern: pattern, options: .CaseInsensitive) } func match(input: String) -> Bool { if let matches = regex?.matchesInString(input, options: [], range: NSMakeRange(0, (input as NSString).length)) { return matches.count > 0 } else { return false } } } |
其实现在 Swift 已经有了对正则表达式的支持,我们只需要这样:
[crayon-6936280abe1bb525479[……]
大多数情况下,如果我们想要获取数组中某一段的内容(比如说从前到中间,或者数组最后的某些值),这时候就需要遍历数组来给新的数组赋值:
|
1 2 3 4 5 6 7 |
let fixedArray = [1,2,3,4,5,6] var myArray:[Int] = [] for (i,n) in fixedArray.enumerate() { if i > 3 {break} myArray.append(n) } |
这样数组短了还好说无所谓,但如果数组比较大而我们需要的值又比较多,那遍历起来显然就很浪费时间。[……]
使用 python 的时候,经常需要下载一些第三方的框架,好在 python 也有类似 apt 的包管理工具,pip。
不过,pip 虽然能够管理包,却没有切换镜像源的功能,而我们下载的包,大多数都在国外大型的代码托管服务器上,这就导致了往往几百KB的包要下载一个小时。
[……]
国内似乎没有人愿意来为 iOS 系统写一个输入法,除了几个寡头大公司在做以外就没有别的了。走近了中国特有的苹果生态平台看看,发现其实里边都是空壳子,有意义的应用真的是少的可怜。
落格博客最近正在致力于给 iOS 平台写第一款能真正支持码表的双拼输入法,第一个兼容的双拼方案自然是开放的“小鹤双拼”,[……]
说起 SQLite,它和你熟知的 MySQL 一样,都是关系型数据库管理系统,但与后者不同的地方在于,它完全不需要对应的独立服务器!
一般说起来,SQLite 都是以文件的形式存在,大多用在应用的内嵌储存里。通过在应用代码里加载 SQLite 库,就可以很方便地直接存取 SQL[……]
nRF24L01 是一款工作在 2.4~2.5GHz 世界通用 ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型 SchockBurstTM 模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率频道选择和协议的设置可以通过 SPI 接口进行设置。
方便的设置以及极低[……]
在 Mac 上玩 Arduino,除了可以使用官方的那个简单的 IDE 之外,还可以选择使用 Xcode 来进行开发。
使用 embedXcode 插件即可让 Xcode 摇身一变成为嵌入式开发 IDE,包括了本地编译、上传等全套功能。
不过,在使用标准库的时候就出了问题,比如上[……]
在写代码的过程当中,我们总会遇到需要保证全局只有一个实例的时候,这个时候就要使用单件模式。
单件模式——它确保了一个类只有一个实例,并提供一个全局访问点。
那么怎么实现单件模式呢?我们来看看最经典的 Java 代码,该怎么实现这个 单件模式。
我们在网上随便搜索“java 单件模式”就能找[……]
我们都知道,比如 Swift 、 Python 里,都不需要特别的去声明一个变量的类型——它们虽然是类型安全的语言,却可以动态地在上下文中帮你推断变量的类型。
Python 不用你做什么,写一个名字就是默认声明了一个变量;而 Swift,则更接近我们的题目,它也使用了[crayon-69362[……]
前段时间我写过一篇文章,说是时候使用白名单来翻墙了,不过那个白名单已经过期好久,用起来不是那么顺畅了,后来我就夸下海口说:我要自己实现一个爬虫,来爬取中国的网站域名,好更新白名单。
好吧,总之这个爬虫是写好了然后上线爬取了一万多的,不过最后我找到了前人做的更好的方案,于是这个爬虫项目还是废弃了[……]
在使用 Python 做网络编程的时候难免会遇到字符串与字节流的转换,这里我们记录以下几种常用的方法:
首先是字节数组转字符串,也就是str:
|
1 2 3 4 5 |
b = b'some byte array' str(b, encoding = "utf-8") #or bytes.decode(b) |
然后是字符串转为字节数组:
[crayon-6936280abfdbd5536[……]
大多数情况下,人们用编程语言是否会隐式地转换数据类型来判断一门语言是否为弱类型语言,比如 C。
而实际上,对于除了比较经典的语言外,大部分人对于其他常见语言的强、弱类型是分不清楚的——或者说,是不一致的。因此总会有人来争论它。如果我们以开篇的概念来作为基础,那么矛盾就会显现:
比如 Pasc[……]
我们在进行网络开发的时候,难免要从网络服务器中获取数据,很多时候还需要给服务器提交数据,就现在来说,一般我们都会习惯使用 JSON 格式的数据,因为它方便好用,这次我们就一起来看看,如何用 Swift 发送 JSON-RPC 命令并获取回复。
JSON-RPC是一个无状态且轻量[……]
今天在练习设计模式的时候忽然发现 Swift 里是没有栈的——就是 Stack 类。由于我是照着 Java 版的设计模式来学习的,所以我只好自己看着实现一个了。
不过说起来,在苹果官方手册的“泛型”一章中还真有个栈的栗子,它是用结构体实现的。这也倒是符合了 Swift 一贯的风格——毕竟, S[……]
更新:一转眼 5 年过去了,这篇文章也无效了……现在 Xcode 已经不允许随意安装插件,目前唯一推荐的也就一个 Swift Format for Xcode,各位,共勉。
—
在 OSX 上进行开发,那你必然少不了和这个著名的 IDE 打交道。毕竟,我们使用IDE就是为了提高生产力[……]
经朋友推荐,遇到这么一篇介绍并发的好文章,我把它翻译过来给大家读一读。我非专业翻译人员,水平有限。差错在所难免,各位读者如果发现文内有误,欢迎留言斧正!
R0uter
文章译自 appcoda iOS Concurrency: Getting Started with NSOperation a[……]