在实际项目中,我们时常需要统计比如学生的平均分数,最高分,最低分,以及同学们都来自哪些不重复的城市等。此时我么可能需要用到循环计算,但一门优雅的语言应该有效的避免循环,因为很多时候 for, while快速枚举等都会显得很累赘。幸好Cocoa提供了键值编码来优雅的解决这类问题。

由于这个点比较简单,所以不赘述原理了,能读到这篇文章说明对KVC已经有一定了解,下面直接说重点。

KVC中的集合运算符有以下三类:

1. 简单集合运算符

@avg,@sum,@max,@min,@count, 在Swift3以前和OC中只能操作NSObject的子类集合,如NSArray,NSSet等,[……]

继续阅读

前几天写了一篇关于iOS中正则表达式的使用笔记,正则表达式在一堆不规则的文本中匹配出想要的内容时功能强大。但很多时候我们只需要获取一个bool值,比如判断是字符串是否是合法的email,是否是合法的手机号码,是否是合法的URL等,此时正则显得过于臃肿而且效率低下。这个时候谓词(NSPredicate)就能派上大用场了。

什么是谓词,以下是官方定义:

The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-mem[……]

继续阅读

定义:

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配或替换一系列匹配某个句法规则的字符串。

使用步骤:

1.定义正则表达式规则
2.通过规则,创建正则表达式对象
3.利用正则表达式对象匹配字符串

语法介绍

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

构造正则表达式的方法和创建数学表达式的方法一样。[……]

继续阅读

最近公司总算度过低潮期,算是否极泰来吧,在业务衔接的空隙拜读了东野大叔的《解忧杂货店》,书不很长,由5个小故事连接成一个完整的故事。一晚上时光机的设定让我很快沉迷于书中的世界,环环相扣的故事,不同人不同的人生和烦恼,读后很受启发。先来整理一下故事的时间线和故事线,以及一个大胆的猜测:
时间线
高清图点击此处下载

看完了整体的时间线好故事线,在来分析一下故事想要带个我们哪些思考?

关于梦想:
书中奥运女孩静子,在面对人生的困境,教练男友绝症,自己想要坚持参加奥运会,但又想陪在男友身边照顾男友。此时,在她内心中出现的是爱情和梦想的抉择,所以她将困境告诉了解忧杂货店,其实在她内心深处是有[……]

继续阅读

我们在使用标准的JSON或者XML时可以非常容易的进行解析并获取到想要的数据,但是在对一些不那么规则或自定义的字符串进行处理时,就显得比较麻烦了,幸好iOS提供了Scanner类和对正则表达式的支持(后续在写)。Scanner类是一个类簇的抽象父类,该类簇为一个从NSString(虽然Swift中大多使用String,但这个类还保留着NSString)对象扫描值的对象提供了程序接口。

先来查看Scanner的定义:
[cc lang=”Swift”]
open class Scanner : NSObject, NSCopying {
open var string: St[……]

继续阅读

iOS中要进行文本操作,如截取,trim等,CharacterSet是很重要的一个环节。iOS中用CharacterSet来表示一组Unicode的集合,它经常和Scanner,NSPredicate配合使用。

这里是SDK提供的常用CharacterSet
[cc lang=”Swift”]

CharacterSet.alphanumerics // 字母和数字的组合,包含大小写, 不包含小数点

CharacterSet.decimalDigits // 0-9的数字,也不包含小数点

CharacterSet.controlCharacters // ASCII 码[……]

继续阅读

完整的请求报文包含3部分:起始行,header,body. body可以为空,如下所示

[cc lang=”HTML”]
GET /wp-admin/post.php?post=432&action=edit HTTP/1.1 // 起始行,包含请求路径,http版本等信息,以空格分割,CRLF结尾
// 以下为header内容
Host www.cxylg.com // 请求的host
Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWe[……]

继续阅读

通用header

通用header指客户端和服务端都可以使用的header 例如日期header,数据类型header等

1
2
Date: Tue, 3 Oct 1974 02:16:00 GMT
MIME-Version1.0

请求header
请求header指只在请求报文中有效的header,例如Host,From等,Range 详参
[cc lang=”HTML”]
Host: d19hf05jf0kxo4.cloudfront.net
From: gjhlovelh@vip.qq.com
Range: byte[……]

继续阅读

最近工作中遇到很多字符串截取相关的内容,但Swift中字符串的截取开始时用着总是不如OC顺手,最近终于弄明白String.Index的用法,总结一下

开始索引和结束索引 startIndex and endIndex

[cc lang=”Swift”]
var str = “Hello, playground”

str.characters.count // 17

// startIndex 为字符串第一个字符的索引
let startIndex = str.startIndex // 0

// endIndex 为最后一个字符后面一个索引,这里跟[……]

继续阅读