------- ios培训、 android培训、java培训、期待与您交流! ----------
一.Foundation框架
1.概念:框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。
为所有程序开发奠定基础的框架称为Foundation框架
2.使用:要想使用Foundation框架中的功能,包含它的主文件即可
#import <Foundation/Foundation.h>
二.NSString:
不可变字符串类 一个NSString对象就代表一个字符串
通过方法产生的字符串都是新的字符串,不会改变原来的字符串
(一)创建字符串
1.字面量方式 (常量字符串,存储在常量区)
NSString * str = @"kobe";
2.类方法创建
NSString * str = [NSString stringWithFormat:@"int = %d",@"hello",10];
3.对象方法创建
NSString * str = [[NSString alloc] initWithFormat:@"%@",@"heima"];
(二)字符串的获取 (关键单词 substring)
1.获取字符串长度
NSString * str = @"Messi";
long len = str.length;
2.获取子串
(1)从哪个索引开始截取字符直到结尾(包含索引上的字符)
NSString * str = @"www.cctv.com";
NSString * str1 = [str substingFormIndex:4];// cctv.com
(2)从字符串开头截取到索引位置(不包含索引位置的字符)
NSString * str = @"www.cctv.com";
NSString * str1 = [str substingToIndex:3]; // www
(3)从哪个位置开始截取,截取长度是多长 range.location range.length
NSString * str = @"www.cctv.com";
NSRange range = {4,4};
NSString * str1 = [str substingWithRange:range];// cctv
(4)获取字符串区间
NSString * str = @"www.cctv.com";
NSRange range = [str rangeOfString:@"com"];
// 判断有没有这个子串
if(range.length==0){
NSLog(@"没有这个子串")
}
NSLog(@"%@",NSStringFromRange(range));
(5)获取字符串索引上的字符
NSString * str = @"www.cctv.com";
unichar c = [str characterAtIndex:7]; // v
(三) 字符串的判断与比较 (关键单词:isEqual compare )
1.判断地址是否相同: str1==str2
2.判断内容是否相同:[str1 isEqualToString:str2];
3.字符串比较大小
compare方法比较的是内容,从前到后一个一个的比较,返回值有3个
NSOrderedAscending,NSOrderedSame,NSOrderedDescending,
str > str2 NSOrderedDescending
str < str2 NSOrderedAscending
str == str2 NSOrderedSame
代码演示:
1 #import <Foundation/Foundation.h> 2 3 int main(int argc ,const char argv[]){ 4 5 NSString * str1 = @"abc"; 6 7 NSString * str2 = @"abc"; 8 9 NSComparisonResult rs = [str1 compare:str2]; 10 11 if(rs==NSOrderedSame){ 12 13 NSLog(@"str1== str2"); 14 15 } else if(rs==NSOrderedAscending){ 16 17 NSLog(@"str1<str2"); 18 19 }else if(rs==NSOrderedDescending){ 20 21 NSLog(@"str1>str2"); 22 23 } 24 25 return 0; 26 27 }
// 比较的时候字符串不区分大小写
compare:(NSString *) options: NSCaseInsensitiveSearch
// 用于比较字符串中字符个数
compare:(NSString *) options: NSNumericSearch
(四)字符串转换 (关键单词:uppercase lowercase capitalized)
1.转大写 :[str uppercaseString];
2.转小写:[str lowercaseString];
3.单词首字母大写:[str capitalizedString];
4.基本数据类型转字符串
NSString intStr = [NSString stringWithFormat:@"%d",10];
5.字符串转基本数据类型
int a = intStr.intValue;
double b = intStr.doubleValue;
6.C字符串转OC字符串 (withCString)
NSString * str = [NSString stringWithCString:"haha" encoding:NSUTF8StringEncoding];
7.OC字符串转C字符串
char * c = [str cStringUsingEncoding:NSUTF8StringEncoding];
(五) 字符串替换 (关键单词:stringBy)
1.在原有字符串的末尾拼接一个字符串
[str stringByAppendingString:@"haha"];
2.字符替换
// 用 - 替换 *
[str stringByReplacingOccurrencesString:"*"withString:@"-"];
3.使用字符串替换原来字符串中的某个区间
NSString * str = @"www.cctv.com";
NSRange range = [str rangeOfString:@"cctv"];
// 用sina替换掉cctv所在的区间
[str stringByReplacingCharactersInRange:range withString:@"sina"];
4.删除原字符串中所有指定的字符
// 用空字符"" 替换 意味着删除
[str stringByReplacingOccurrencesString:"*"withString:@""];
5.去掉字符串两头的空格(重点掌握)
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
(六)字符串与文件(关键单词:writeToFile)
1.把字符串写入文件
NSString * str = @"今天雾霾好大";
NSString * path = @"/Users/apple/Desktop/test.txt";
BOOL isSuccess = [str1 writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
if(isSuccess){
NSLog(@"写入成功");
}
2.读取文件
NSString * str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
(七) 字符串与URL
1.URL :统一资源定位符
格式:协议头://主机域名[IP,服务器]/路径
2.举例:http://ios.itcast.cn/ios/images/content_25.jpg
file:///Users/apple/Desktop/test.txt
由于file就是在本机中查找,所以没有主机名称
3.创建URL
(1)传入完整的字符串创建
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
(2)通过文件路径创建(路径中不要出现中文)
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/test.txt"];
4.把字符串写入URL
BOOL isSuccess = [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
5.读取URL
NSString * str =[NSString stringWithContentsOfFile:url encoding:NSUTF8StringEncoding error:nil];
三.NSMutableString (关键单词:append inset)
可变字符串,是NSString的子类。对原有字符串可以进行增改删操作
1.使用场景:字符串里的内容需要经常修改,那么就使用NSMutableString创建字符串
2.创建字符串
(1)创建了一个空的可变字符串,里面容量小。放入字符串存储空间以二进制递增,效率低
NSMutableString * str = [NSMutableString string];
(2)通过容量(capacity)创建,可变字符一创建就有多大的容量,超过容量再去扩展,效率高
NSMutableString * str = [NSMutableString stringWithCapacity:200];
3.往字符串中增加内容
[str appendString:@"haha"];
4.在某个位置插入字符
// 在索引为3的位置插入*
[str insetSring:@"*" atIndex:3];
5.赋值
// 可变字符串不能使用字面量的方式进行赋值。如果赋值可以使用点语法
str.string = @"abc"
代码演示:
1 // 把20个 "lol" 拼接起来使用空格隔开 2 3 #import <Foundation/Foundation.h> 4 5 int main(int argc ,const char argv[]){ 6 7 // 定义一个可变字符串 8 9 NSMutableString * str = [NSMutableString stringWithCapacity:100]; 10 11 // 添加字符串 12 13 for(int i=0;i<20;i++){ 14 15 [str appendString:@" lol"]; 16 17 } 18 19 // 去掉字符串首位的空格 20 21 NSRange range = {0,1}; 22 23 [str deleteCharactersInRange:range]; 24 25 return 0; 26 27 }
四.数组
1.概念:有序的对象集合,可以存放任意的OC对象
2.特点: (1)同一数组中可以存放不同类型的对象
(2)同一个对象可以被存入数组多次
(3)不能存放基本数据类型,基本数据类型需要转换成其包装类型
(4)元素是有序的
(5)通常把一种类型的对象放入数组中,方便批量操作
五.NSArray
1.概念:不可变数组,一旦创建就不能增加,修改,删除其中的元素
2.创建
(1)简洁的构造方法
NSArray * array = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];
// nil 表示数组结束了。不要在数组中间加入nil
(2)通过对象方法
NSArray * array = [NSArray alloc] initWithObjects:dog,dog1,nil];
(3)字面量(最常用)
NSArray * array = @[iphone,ipad];
3.获取元素
(1)通过对象方法
NSArray * array = @[iphone,ipad];
// 访问第2个元素ipad
CZIpad * ipad = [array objectAtIndex:1];
(2)快捷方式
iPad = array[1];
4.获取数组长度
long len = array.count;
5.判断数组中是否包含某个元素(contain)
BOOL isContain = [array containObject:dog];
6.数组遍历
NSArray * array [email protected][@"a",@"b",@"c",@"d"];
(1)普通遍历
for(int i=0;i<array.count;i++){
NSLog(@"%@",array[i]);
}
(2)快速遍历
for(NSString * str in array){
NSLog(@"%@",str);
}
(3)使用block遍历
//BOOL *stop 如果赋值为YES则停止循环
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop){
NSLog(@"下标:%lu 值:%@",idx,obj);
}];
*stop = YES;
7.数组元素排序
[array sortedArrayUsingComparator:^NSComparisonResult(CZDog * obj1,CZDog * obj2){
if(obj1.age==obj2.age){
return [obj1.name compare: obj2.name];
} else if(obj1.age>obj2.age){
return NSOrderedDescending; // 降序
} else {
return NSOrderedAscending; // 升序
}
}];
8.字符串与数组的转换
(1)使用字符串分割原来的字符串成一个数组
NSString * str = @"1 2 3 4 5 6";
NSArray * arr = [str componentsSeparatedString:@","];
(2)把数组组装成字符串
NSString * str 1= [arr componentsJoinedByString:@"," ];
9.数组与文件 (writeToFile)
(1)写入文件
NSArray * array [email protected][@"a",@"b",@"c",@"d"];
NSString * path = @"/Users/apple/Desktop/test.plist";
BOOL isSuccess = [array writeToFile:path atomically:YES];
if(isSuccess){
NSLog(@"写入成功");
}
(2)读取文件
array=[NSArray arrayWithContentsOfFile:path];
六.NSMutableArray
1.概念:可变数组,继承NSArray,支持插入,删除,修改的操作
2.创建
(1)创建一个空的可变数组
NSMutableArray * arrM = [NSMutableArray array];
(2)创建可容纳10个元素的可变数组
NSMutableArray * arrM = [NSMutableArray arrayWithCapacity:10];
3.添加元素
(1)不能通过字面量添加
(2)[arrM addObject:@"a"];
(3) 通过一个不可变数组去设置一个可变数组
arrM.array = @[@"1",@"2"];
4.在某个索引插入一个元素
// 在索引为1的位置插入元素"a"
[arrM insetObject:@"a" atIndex:1];
5.删除元素
//通过isEqual方法比较,只要与a相同就删除
[arrM removeObject:@"a"];