一.学习方法——浑水摸鱼
所谓浑水摸鱼 就是把水给搅浑后再摸鱼
浑水:就是听课和学习的过程,在听老师课堂的时候 听懂了 只代表你接受了老师的观点,他说服了你,但这不代表学会了,这只是把水搅浑了。
摸鱼:摸鱼的过程 就是自己摸索、归纳、总结,发现问题,解决问题的一个过程,不总结,不归纳,永远都摸不到鱼,只是把水给搅浑了,并没有收获
二.类与对象
类:抽象出来的一类 才叫类
对象:面向对象 万事万物皆对象
三.使用OC写程序的基本工具
(一).setter getter 方法 与 自定义构造方法(注意自定义构造方法 只能在初始化一个对象的时候使用)
(1).方法
setter方法:设置者
- (void)setname:(nssstring *)name;
getter方法:获取
- (nsstring *)getName;
setter 方法的公式 :
- (void)set属性名:(属性的类型)形参名;
getter公式:
- (属性类型)属性名;
(2). 点语法 (.)又叫属性 可以通过点给属性赋值 取值
在.h文件中: @property 属性类型 属性名 //重点 (以前在.m里还要写synthesize现在不用)
@property表示声明属性 @synthesize表示实现属性的方法 可能面试考
现在@property 既包含声明 也包含实现
(3).构造方法
init
自定义构造方法
1.公式:- (id)initWith要初始的名字:(数据类型)形参名
{
self = [super init];
if(self)
{
}
return self;
}
2.本质:就是一个有参数 有返回值的方法 但是自定义构造函数有一定的意义 表示一个创建对象的方法
标识它有特殊意义的符号:
(1)必须用initWith作为方法的开头 并且 W 必须大写
(2)方法实现的公式 自定义构造函数 必须实现下面的功能
self = [super init];
if(self)
{
}
return self;
3.注意:(1)initWith W必须大写
(2)自定义构造方法 需要声明 在.h文件里声明
4.使用目的 就是传值
属性在正向传值是 都可以使用属性
(二)字符串的处理
#一#.不可变字符串
(1)初始化空的字符串
NSString*string = [NSString string];
NSString *string = [[NSStringalloc]init];
(2)2.初始化并赋值
NSString *string = @"我是好学生。";//常用的方法
3.大小写转换
关键词:uppercaseString(转成大写)
lowercaseString (转成小写)
capitalizedString(首字母大写)
例题:NSString * string = @"I am wanglong";
NSString *s1 = [string uppercaseString];
NSLog(@"%@",s1);//转成了大写
NSString *s2 = [string lowercaseString];
NSLog(@"%@",s2);//转成了小写
NSString * s3 = [string capitalizedString];
NSLog(@"%@",s3);//把首字母转成了大写其它不变
4.判断字符串是不是以什么开头或者结尾
关键词: hasPrefix hasSuffix
例题1:(判断开头是不是王)
NSString * string = @"王龙";
BOOL s = [string hasPrefix:@"王"];//注意用bool变量来接收
if (s!=NO){
NSLog(@"是以王字开头的");
}
else{
NSLog(@"不是以王字开头的");
}
例题2:(判断结尾是不是龙)
NSString * string = @"王龙";
BOOL s1 = [string hasSuffix:@"龙"];(注意用bool变量进行接收)
if (s1!=NO){
NSLog(@"是以龙字结尾的");
}
else{
NSLog(@"不是以龙字结尾的");
}
5.查看字符串是否包含什么字符
关键词:rangeOfString
NSNotFound 表示没找到
例如: NSString * string = @"王龙";
NSRange range = [string rangeOfString:@"王"]; //注意类型
if(range.location!=NSNotFound) { //注意条件的填写
NSLog(@"找到了王字");
}
else{
NSLog(@"没有找到王字");
}
6.判断两个字符串是否相同
关键词:isEqualToString
例如:(注意用bool变量进行接收)
NSString * string = @"王龙";
BOOL isEual = [string isEqualToString:@"王隆"];
if (isEual!=YES){
NSLog(@"这两个不相同");
}
else{
NSLog(@"这两个相同");
}
7.不可变字符串的拼接
拼接字符串的方法 会返回一个拼接好的新的字符串
stringByAppendingString:@""
stringByAppendingFormat:@""
例如:NSString * string = @"王龙";
NSString *new = [string stringByAppendingString:@"是个好人"];
NSLog(@"%@",new);
NSString *new1 = [string stringByAppendingFormat:@"66"];
NSLog(@"%@",new1);
8.截取字符串
关键词:
(1)substringToIndex:2 从开头截到第2个
(2)substringFromIndex:3 从第三个截取到最后
(3)substringWithRange:range 从第几个开始截到第几个//注意range的范围 自己设定
例题:
NSString * string = @"大宝是个不知道操心的人";
NSString *new1 = [string substringToIndex:2];
NSLog(@"%@",new1);//截取前两个
NSString *new2 = [string substringFromIndex:4];
NSLog(@"%@",new2);//截取从第四个开始到最后
NSRange range = {3,2};
NSString *new3 = [string substringWithRange:range];
NSLog(@"%@",new3);//截取一个范围的字符
9.格式化一个字符串(理解格式化的意思)
NSString *s=[NSString stringWithFormat:@""];
10.格式化的拼接
stringByAppendingFormat@""拼接多个格式化的字符串
例题: NSString * string = @"大宝是个不知道操心的人";
NSString * s1 = @"是的";
NSString *s2 = @"吗";
int s3 = 100;
NSString *new1 = [string stringByAppendingFormat:@"%@%@%d",s1,s2,s3];
NSLog(@"%@",new1);
11.数据转换
(1)把一个实型转换成字符串
例如:
float a = 100.0;
NSString *string = [NSString stringWithFormat:@"%f",a];
NSLog(@"%@",string);
#二#.可变字符串
(1)初始化
#.NSMutableString *string=[NSMutableString string];
#. NSMutableString *s=[[NSMutableStringalloc]init];
(2)初始化并赋值
#:NSMutableString *string1=[NSMutableStringstringWithString:@""];
#.NSMutableString*string2=[NSMutableString stringWithFormat:@""];
(3)拼接
appendString
appendFormat拼接格式化的字符串(适用于拼接多个并且可以是不同类型的)
例如:
NSMutableString *string = [NSMutableString stringWithString:@"大宝是"];
[string appendString:@"个不操心的人"];
NSLog(@"%@",string);
int a=100;
NSString *s = @"确实";
[string appendFormat:@"%d%@",a,s];
NSLog(@"%@",string);
(4)增 删 改
NSMutableString*string = [NSMutableString stringWithString:@"大宝是"];
[stringinsertString:@"个不操心的人" atIndex:3];
NSLog(@"%@",string); 增加
NSRange range = {4,4};
[string deleteCharactersInRange:range];
NSLog(@"%@",string); 删除
NSRange range1 = {4,1};
[string replaceCharactersInRange:range1 withString:@"好"];
NSLog(@"%@",string); 修改
(三).数组
1.初始化
NSArray *list1 = [[NSArray alloc]init];
NSArray*list = [NSArray array];
2.初始化并赋值
(1)直接赋值
NSArray *arry = @[@"数组元素",@"数组元素"];
(2)初始化只有一个元素的数组
NSArray *list = [NSArray arrayWithObject:@"...."];
(3)初始化有多个元素的数组(注意最后边一个元素的逗号不能省略 nil不能省略)
NSArray *list = [NSArrayarrayWithObjects:@"kkk",@"ddd", nil];
3.数组取值
(1)公式:数组名[下标];
例如:(也可以用for循环进行遍历 注意 数组名.count 的使用)
NSArray *list = @[@"我",@"是",@"学生"];
NSString *s = list[0];
NSLog(@"%@",s);
(2)通过方法取值
关键词:oblectAtIndex
例如: NSArray *list = @[@"我",@"是",@"学生"];
NSString *s2 = [list objectAtIndex:1];
NSLog(@"%@",s2);
(3)数组遍历
#:快速遍历
例如: NSArray *list = @[@"我",@"是",@"学生"];
for (NSString *string in list) {
NSLog(@"%@",string);
}
拓展:用快速遍历来遍历对象时 注意条件的填写 类名
4.把字符串 转成数组(注意第一步把字符串以某个符号分割开 此符号将被过滤掉)
例如:(注意关键词)
NSString *string = @"冬天,夏天,春天,秋天";
NSArray *list = [string componentsSeparatedByString:@","];
for (NSString*s in list) {
NSLog(@"%@",s);
}
5.把数组转换成字符串
例如:(注意关键词)
NSArray *list = @[@"春",@"夏",@"秋"];
NSString *s =[list componentsJoinedByString:@","];
NSLog(@"%@",s);
6.可变数组(注意不可直接赋值)
(1)不可变数组里边的方法 都可以在可变数组里用
(2)初始化空数组
NSMutableArray*list = [NSMutableArray array];
(3)初始化并赋值
#:NSMutableArray *list = [NSMutableArrayarrayWithObjects:@"",@"", nil];
(4)增 删 改 查
例如:
NSMutableArray *list = [NSMutableArray arrayWithObjects:@"春",@"夏",@"秋", nil];
[list addObject:@"冬"];
for (NSString*s in list) {
NSLog(@"%@",s);
} 增
[list removeObject:@"春"];
for (NSString *s1 in list) {
NSLog(@"%@",s1);
}删指定内容的
[list removeObjectAtIndex:2];
for (NSString *s2 in list) {
NSLog(@"%@",s2);
} 删指定下标的
[list removeLastObject];删最后一个
[listremoveAllObjects];删所有
//替换
[list replaceObjectAtIndex:0 withObject:@"王龙"];
for (NSString*s3 in list) {
NSLog(@"%@",s3);
}
//查找内容 确定位置
NSString *a = @"秋";
NSUInteger i = [list indexOfObject:a];
NSLog(@"%lu",i);
(四).字典
1.什么是字典
key和值对应存在的数据集合就是字典
2.初始化空的字典
#. NSDictionary *d = [NSDictionary dictionary];
#.NSDictionary *s = [[NSDictionary alloc]init];
3.初始化字典并且赋值
(1).直接赋值(常用)
公式:NSDictionary *dic =@{@"Key":@"值",@"key1":@"值1"};
例如:NSDictionary *people1 = @{@"name":@"张三",@"age":@22,@"face":@"帅",@"height":@"高",@"sex":@"男",@"weight":@"50",};
(2).通过方法(函数)赋值(注意值和key的先后顺序)(不常用)
例如:NSDictionary *p1 = [NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"name", nil];
4.从字典里取值(通过key取值)
(1).公式:字典名[key]
例如:NSString *name = people1[@"name"];(用到的字典就是上边的范例)
(2).字典的遍历
#:用到的方法
allKeys获得字典里所有的key
allValues 获得字典里所有的值
例如:(用到的字典还是上边的)
NSArray *allKey = people1.allKeys;
for (NSString *key in allKey) { //用到快速遍历的for方法
NSLog(@"%@",people1[key]);
}
(3).通过方法(函数)取值
(1)先初始化并赋值一个字典如下:
NSDictionary *p1 = [NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"name", nil];
(2)开始取值
NSString *value =[people1 objectForKey:@"name"];
NSLog(@"%@",value);
输出结果:张三
5.可变字典(增 删 改 查)
增:[字典名 setObject:@“值” forKey:@“key”];
删:(1).删除一个
公式:[字典名removeObjectForKey:@"key"];
(2).删除多个
分析:定义一个数组,把想要删除的元素的key放进数组,如下:
NSArray *keys = @[@"title"];
[dic removeObjectForKey:keys];
(3).删除全部元素
公式: [字典名removeAllObjects];
改(替换):
分析 : 替换与增加一样 若原来那个键位有值那就是覆盖 没有就是添加
公式: [字典名 setObject:zhi forKey:key];