NSRange简介:
1、Foundation框架是其他所有iOS框架的基础。
2、常用的结构体介绍:
NSRange
NSPoint\CGPoint
NSSize\CGSize
NSRect\CGRect
3、首先NSRange的介绍进入开发文档:
typedef struct _NSRange{
NSUInteger location; //位置
NSUInteger length;//长度
}NSRange;
进入NSUInteger:
typedef long NSInteger;
typedef unsigned long NSUInteger;
4、回顾结构体: 例如
struct Date{int year,int month,int day};
第一种方式赋值:直接按顺序赋(因为没有用typedef,要有struct)
struct Date d={2011,9,1};
直接按变量赋值:(这种方式可以不按顺序进行赋值)
struct Date d2={.month=10,.year=2019,.day=20};
5、NSRange的创建方法:
由3已知范围这种结构体已经用typedef定义为NSRange类型,所以使用NSRange定义变量时不再加struct。range的几种赋值方式:假如要取@“i love oc”中的love。
NSRange r1={2,4};//可读性太差,不使用
NSRange r2={.location=2,.length=4}; //太长,不使用
NSRange r3=NSMakeRange(2,4);//掌握
6、OC字符串创建方法:
NSString *str=@“sdjdjhdsjd”;或者以指定的格式创建
NSString *str=[NSString stringWithFormat:@“I have %d ”,25];
7、NSRange在字符串中的功能
(1)查找某个字符串在str中的范围:
NSRange range=[str rangeOfString:@“hello”];
NSLog(@“loc=%ld len=%d”,range.location,range.length);
注意:如果没有找到则location的成员值为NSNotFound。所以要进行判断 if(range.location==NSNotFound){ //不存在时的处理}
(2)根据范围取字符串的字串
NSString *substr=[str substringWithRange:range]; //根据已经取得的Range或者新建一个Range
NSString *substr=[str substringWithRange:NSMakeRange(3,5)];
--------------------------------------------------------------------------------------------
NSSet集合简介:
1、NSSet简介
(1)NSSet也是集合,它与NSArray的区别是它没有顺序。
它有个子类NSMutableSet是可变集合。与NSArray及其类似。
(2)NSSet是不可变集合,若用这种方式NSSet *s=[NSSet set];表示创建一个新的空集合。则以后永远为空 和NSArray类似。另外它也只能存放OC对象,不能存放基本类型数据。
2、NSSet的基本用法
(1)NSSet的创建方式:使用setWithObjects方法 举例如下:
NSSet *s2=[NSSet setWithObjects:@“jack”,@“rose”,nil];
(2)取一个元素方法。因为它没有顺序,所以取元素的方法与NSArray完全不同。用anyObject方法返回一个对象是很随机的。
例如:NSString *str=[s2 anyObject];
3、NSMutableSet为可变集合是NSSet的子类。可以添加元素当然也可以初始化为一空集合。例如:NSMtableSet *s=[NSMtableSet set]; [s addObject:@“Tom”]; 方法名与数组的几乎相同。总之,NSSet有的方法,它完全都有。
增删元素方法名的前缀与NSMutableArray相同。
4、NSSet与NSArray的对比
(1)共同点
都是集合,都能存放多个OC对象
只能存放OC对象,不能存放非OC对象类型(基本数据类型,结构体枚举统统不可以)
(2)不同点
NSArray有顺序,NSSet没有顺序。