OC中Foundation框架里常用的结构体和类

NSRange,NSString,NSArray,NSSet,NSDictionary

1,NSRange

1 初始化方式
(1),用一个函数初始化,类似的NSSize,NSRect,NSPoint也是这样赋值的
NSRange range = NSMakeRange(NSUInteger loc,NSUInteger len)
(2),直接用大括号赋值
NSPoint p1 =NSMakePoint(10,10);
NSPoint p2 =NSMakePoint(20,20);
NSRect r1 ={{0,0},{100,90}};
NSRect r2 ={p1,p2};
2,结构体常应用举例
(1),rangeOfString:(NSString *) // NSString对象方法 返回一个NSRange类型的结构体
* 查找某个字符串在str中的范围
* 如果找不到,length=0,location =NSNotFound==-1,NSNotFound是一个枚举
(2),将结构体转为字符串函数
NSString *string = NSStringFromSize(结构体名称);
(3),常用的固定结构体const
CGPointZero ==CGPointMake(0,0)
(4),判断(BOOL)类型的函数
BOOL CGPointEqualToPoint(CGPoint,CGPoint);// 比较两个点是否相同
BOOL CGRectContainsPoint(CGRect,CGPoint);// 判断一个点是否在Rect范围内
(5),使用CG前缀的函数的前提是添加CoreGraphics框架


2,NSString
原理,存放字符串的类

1,NSString的创建
(1),最简单的方式
NSString *s = @"jack";
(2),格式创建
NSString *s = [[NSString alloc] initWithFormat:@"age is %d",10];
(3),c字符串转化为OC字符串
NSString *s = [[NSString alloc] initWithUTF8String:"jack"];
(4),OC字符串转化为c字符串
const char *cs = [s UTF8String];
(5),从文件中创建字符串
// NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s = [[NSString alloc] initWithContentsOfFile:@"路径"encoding:NSUTF8StringEncoding error:nil]
// URL:资源路径
NSURL *url = [NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
NSString *s = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]
(6),类方法
// 一般都会有一个类方法跟对象方法配对,一般一类名开头
[NSString stringWithFormat@""];
(7),追加,附加到另一个字符串后面创建一个新的字符串
NSString *newstring = [s stringByAppendString:@"11 12"];


2,NSString方法举例
(1),字符串的导出
// atomically 参数如果为YES的话,代表原子性,比较安全,字符串导入失败的时候,文件不会创建、
[@"Jack\njack" writeToFile:@"文件路径" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSURL *url = [NSURL fileURLWithPath:@"file:///Users/apple/Desktop/1.txt"];
[@"Jack\njack" writeToURL:@"文件路径" atomically:YES encoding:NSUTF8StringEncoding error:nil];
(2),length 计算字数包括空格,不是计算字符数。
(3),计算字符串s在调用这个方法的字符串中的位置。
rangOfString:@"s"  
(4),将字符串内容以字符c为分割点切割

[s componentSeparatedByString:@"c"];

(5),经字符串转换为(int,double,...)

int i = [a intValue];

int i = [a doubleValue];



3,NSMutableString
(1),NSMutaableString的创建
NSMutableString *s = [NSMutableString stringWithFormat:@"age is 10"]
(2),追加,附加(append)内容到字符串的后面
[s appendString:@"字符串"];
(3),删除NSRange范围内的字符
NSRange range = [s rangeOfString:@"is"]
[s rangeOfSring:range];
[s deleteCharactersInRange:NSMakeRange(4,2)];


4,NSString和NSMutableString追加方法比较
// 返回一个新的字符串NSString
NSString *newstring = [s stringByAppendString:@"11 12"];
// 没有返回值,已经在s后面附加
[s appendString:@"字符串"];


3,NSArray 
原理:以面向对象思想操纵数组,OC数组NSArray只能存放OC对象,不能存放非OC对象类型,不能存放nil值


1,类方法创建
NSArray *a =[NSArray arrayWithObject:(id)];
// 后面的nil是数组元素结束的标记
NSArray *a =[NSArray arrayWithObject:(id),...,nil];
// 编译器特性 ,快速创建一个NSArray对象
NSArray *a = @[id,...];


2,NSArray常用方法举例
(1),求元素个数
[a count];// get方法
(2),访问数组元素方法有两种
[a objectAtIndex:1];
a[1];// 编译器特性
(3),找到元素在数组中的位置
NSUInteger i =[a indexOfObject:数组元素];
(4),快速遍历
// 普通方法
for (int i = 0,i<a.count;i++){代码段}


// id obj代表着数组中的每一个元素,缺点不知道第几次
for (id obj in a)
{
     NSLog(@"%@",obj)
}


// 利用block,每遍历到一个元素,就会调用一次block,并且当前元素和索引文职当作参数传给block
// BOOL *stop 用来停止遍历
[a enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){代码段}]


3,NSMutableArray
(1),创建
@[] 只创建不可变数组NSArray;
(2),方法
// 添加元素
[array addObject:id];
// 删除元素
[array removeAllObjects];
// 删除指定的元素
[array removeObjects:id];
[array removeObjectAtIndex:0];


4,NSSet
原理,存放的元素是没有顺序的

1,类的创建
NSSet *s = [NSSet setWithObject:(id),...,nil]


2,方法
(1),随机选取元素
[s anyObject];
(2),添加元素
[s addObject:(id)];
(3),删除元素
[s removeObject:(id)];


5,NSDictionary
原理,里面存放的东西都是键值对,key -->value,索引-->文字内容

1,创建
(1) 创建key和value后
NSArray *keys = @[(id),...];
NSArray *objects = @[(id),...];
NSDictionary *dict =  [NSDictionary dictionaryWithObjects:objects forKeys:keys];
(2) key和value放一起
NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:
(id),(id),
(id),(id),
(id),(id),nil];
(3) 编译器特性
NSDictionary *dict = @{(keyid) : (valueid),(keyid) : (valueid),...};


2,方法
(1),拿出键对应的值
id obj =[dict objectForKEY:@"name"];
// 编译器特性
id obj = dict [(keyid)];
(2),键值对的个数
dict.count;


3,NSMutableDictionary
(1),添加键值对
[dict setObject:id forKey:id];// 多次添加键值对,最后的会覆盖前面的
(2),移除键值对
removeObjectForKey:id


4,遍历
(1),先拿出keys存放在数组中
NSArray *keys = [dict allkeys];
for (int i=0; i<dict.count;i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLlog*(@"");
}
(2),利用block
[dict enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){
    NSLog(@"%@ - %@",key,obj);

}];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值