https://github.com/apple/swift-corelibs-foundation/blob/bfe81824d9b8a98b84dcc5c022c5a9d567dbc224/Foundation/NSCache.swift[……]
在实际项目中,我们时常需要统计比如学生的平均分数,最高分,最低分,以及同学们都来自哪些不重复的城市等。此时我么可能需要用到循环计算,但一门优雅的语言应该有效的避免循环,因为很多时候 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),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。[……]
我们在使用标准的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[……]
最近工作中遇到很多字符串截取相关的内容,但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 为最后一个字符后面一个索引,这里跟[……]