今天是第三天,基本上讲的内容都是基础的东西,不过确实不错,总结的很好,mark一下,为以后参考。有关的知识点:NSPoint,NSSize,NSRect,NSRange,NSValue
,NSNumber,NSString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSSet,NSUserDefaults,以上不难,但是对于初学者是个好的参考资料。
1. 基本数据类型:NSPoint,NSSize,NSRect,NSRange,转化为NSValue对象方可存放在NSArray,NSSet中,NSValue主要用来封装自定义的数据结构,可以是系统框架提供的CGRect/CGPoint/CGSize等数据结构,也可以是自己定义的struct。
<span style="white-space:pre"> </span>//1.基本数据类型:NSPoint,NSSize,NSRect,NSRange
NSPoint point = NSMakePoint(10, 10);//用于坐标
NSSize size = NSMakeSize(10, 10);//用于大小
NSRect rect = NSMakeRect(0, 0, 10, 10);//point and size即方块区域
NSRange range = NSMakeRange(3, 5);//起始位为3,长度为5
//注:因为像NSArray,NSSet的数组里边只存放对象,所以使用NSValue将数据类型转化为对象,那么就可以存在数组里了
//使用NSValue将任意数据类型封装为对象
NSValue *pointValue = [NSValue valueWithPoint:point];//将Point类型封装为对象类型
NSValue *sizeValue = [NSValue valueWithRect:rect];
NSValue *rectValue = [NSValue valueWithRect:rect];
NSValue *rangeValue = [NSValue valueWithRange:range];
//注:NSValue对象不能使用,必须解封装的基本数据类型才可以使用
//解封装
point = [pointValue pointValue];
size = [sizeValue sizeValue];
rect = [rectValue rectValue];
range = [rangeValue rangeValue];
2. NSNumber主要是用来封装ANSI C内置的数据,比如char,float,int等等,和上述一样转化为对象,才可存放在数组,字典中。
//2.数值类型:NSNumber对象初始化
NSNumber *integerNumber = [NSNumber numberWithInteger:123];
NSNumber *floatNumber = [NSNumber numberWithFloat:123.456];
NSNumber *boolNumber = [NSNumber numberWithBool:YES];
//解封装
NSInteger integer = [integerNumber integerValue];
CGFloat f = [floatNumber floatValue];
BOOL b = [boolNumber boolValue];
3. NSData数据,当我们需要把一些信息写入到文件里或发送到网络上,我们需要把这些数据转换下,变成纯粹的0、1字符流;以下是NSString和NSData相互交换实例
<span style="white-space:pre"> </span>NSString * str = @"hello, world!";
NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding]; //NSString转换成NSData类型
NSString * newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];<span style="font-family: Arial, Helvetica, sans-serif;">//</span><span style="font-family: Arial, Helvetica, sans-serif;">NSData</span><span style="font-family: Arial, Helvetica, sans-serif;">转换成NSString类型</span>
4. 以下是NSString得相关操作
<span style="white-space:pre"> </span>//1.字符串初始化
NSString *str1 = [[NSString alloc] initWithFormat:@"LV%d%@",123,@"名"];//拼接
NSString *str2 = [[NSString alloc] initWithString:str1];//str1,str2内容一样,地址不一样
//便利构造方法初始化字符串
NSString *str3 = [NSString stringWithString:str2];
NSString *str4 = [NSString stringWithFormat:@"%@ %d",str3,123];
//最简单的方式
NSString *str5 = @"123";
//2.字符串拼接
NSString *str21 = @"123";
NSString *str22 = @"456";
NSString *str23 = [str21 stringByAppendingString:str22];
NSLog(@"%@",str23);
NSString *str24 = [str23 stringByAppendingFormat:@"%d",123];
NSLog(@"%@",str24);
//3.字符串截取 subString...(substringFromIndex,substringToIndex,substringWithRange)
NSString *str31 = @"abcdefgh";
NSString *str32 = [str31 substringFromIndex:4];
NSLog(@"%@",str32);
//4.字符串查询 rangeOfString
NSRange range41 = [str31 rangeOfString:@"de"];
if (range41.length==0 && range41.location == NSNotFound) {
NSLog(@"没有找到!");
} else {
NSLog(@"找到了!");
}
//5.字符串替换 stringByReplacing...
NSString *str51 = [str31 stringByReplacingCharactersInRange:range41 withString:@"DE"];
NSLog(@"%@",str51);
NSString *str52 = [str31 stringByReplacingOccurrencesOfString:@"de" withString:@"DE"];
NSLog(@"%@",str52);
//6.字符串比较 isEqualTo...
NSString *str61 = @"abC";
NSString *str62 = @"abc";
BOOL isEqual = [str61 isEqualToString:str62];
if (isEqual == YES) {
NSLog(@"相等!");
}else{
NSLog(@"不相等!");
}
NSComparisonResult result = [str61 compare:str62];
if (result == NSOrderedAscending) {
NSLog(@"升序!");
}else if(result == NSOrderedSame){
NSLog(@"相等!");
}else{
NSLog(@"降序!");
}
//7.字符串长度获取
NSInteger len = [str61 length];
//8.字符串数值转换 integerValue...
NSString *str81 = @"123";
NSInteger i = [str81 integerValue];//将字符串转化为整形
NSString *str82 = [NSString stringWithFormat:@"%ld",i];//将整形转化为字符串
//9.字符串大小写转换 uppercaseString、lowercaseString、capitalizedString
NSString *str91 = @"hello123world!";
NSString *str92 = [str91 uppercaseString];//转化为大写字母
NSLog(@"%@",str92);
NSString *str93 = [str91 capitalizedString];//每个单词首字母都要大写
NSLog(@"%@",str93);//输出Hello123World!
5. NSMutableString可变字符串相关处理
<span style="white-space:pre"> </span>//1.插入字符串
NSMutableString *str10 = [NSMutableString stringWithFormat:@"%d",123];
[str10 insertString:@"456" atIndex:3];
NSLog(@"%@",str10);//输出123456
//2.删除
[str10 deleteCharactersInRange:NSMakeRange(2, 1)];
NSLog(@"%@",str10);//输出12456
<span style="white-space:pre"> </span>//1.NSArray初始化
//一般初始化:alloc+initWithObjects;//最常用的初始化方法
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"hello",[NSValue valueWithPoint:NSMakePoint(10, 20)],[NSNumber <span style="white-space:pre"> </span><span style="font-family: Arial, Helvetica, sans-serif;">numberW</span><span style="font-family: Arial, Helvetica, sans-serif;">ithBool:YES], nil];</span><span style="white-space:pre">
</span> //便利构造初始化:arrayWithObjects;
NSArray *arr2 = [NSArray arrayWithObjects:[NSString stringWithFormat:@"%d",123],[NSValue valueWithSize:NSMakeSize(10, 10<span style="white-space:pre"> </span>)],arr1 , nil];
//最简单的初始化
NSArray *arr3 = @[@"123",@"456",@"Hello",arr2,@"4"];
//2.NSArray取值:objectAtIndex、lastObject、firstObject
NSString *str41 = [arr3 objectAtIndex:1];
NSString *str42 = [arr3 firstObject];//取数组中第一个值
NSString *str43 = [arr3 lastObject];//取数组中最后一个值
//3.NSArray增加:arrayByAddingObject
NSArray *arr31 = [arr3 arrayByAddingObject:[NSValue valueWithSize:NSMakeSize(10, 10)]];
NSLog(@"%@",arr31);
//4.NSArray查询:indexOfObject
NSUInteger index = [arr31 indexOfObject:@"4"];
if (index == NSNotFound) {
NSLog(@"没有找到!");
}else{
NSLog(@"%lu",index);
}
//5.NSArray排序:sorted...
NSArray *arr51 = @[@"c",@"a",@"g",@"f"];
NSArray *arr52 = [arr51 sortedArrayUsingSelector:@selector(compare:)];//系统自带排序
NSArray *arr53 = [arr51 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {//自定义排序
return NSOrderedDescending;
}];
#pragma mark - NSMutableArray可变数组
//可变数组运算:(可变数组可以对自身进行修改)
NSMutableArray *marr1 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",nil];//数组里边可以有其他类型对象
//1.增:addObject:(增方法一定不能添加空对象)
[marr1 addObject:@"4"];
NSLog(@"%@",marr1);
//2.删:removeObject、removeObjectAtIndex:
[marr1 removeObject:@"1"];
NSLog(@"%@",marr1);//输出:(2,3,4)
[marr1 removeObject:@"4" inRange:NSMakeRange(0, 2)];//在一定范围内删除
NSLog(@"%@",marr1);//输出:(2,3,4)
//3.查:indexOfObject:
BOOL ui = [marr1 indexOfObject:@"2"];
NSLog(@"%d",ui);//输出:0
//4.改:replaceObjectAtIndex:withObject:
[marr1 replaceObjectAtIndex:2 withObject:@"abc"];
//5.排序:sort...
NSMutableArray *marr2 = [NSMutableArray arrayWithObjects:@"1",@"5",@"3",nil];
[marr2 sortUsingSelector:@selector(compare:)];
#pragma mark - 数组遍历(注意:不能在遍历的同时修改增删可变数组)
//1.for循环
for (int i = 0; i<[marr2 count]; i++) {
NSLog(@"%@",[marr2 objectAtIndex:i]);
}
//2.快速枚举
for (id var in marr2){
NSLog(@"%@",var);
}
//3.测试:1-100放到数组里边
NSMutableArray *marr3 = [[NSMutableArray alloc] init];
for (int i = 0; i<100; i++) {
[marr3 addObject:[NSString stringWithFormat:@"%d",i]];
}
8. NSDictionary的相关操作
#pragma mark - NSDictionary字典
//1.一般初始化:alloc+initWithObjectsAndKess:
//2.便利初始化:dictionaryWithObjectsAndKeys:
NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"key1",@"abc",@"key2",nil];
NSLog(@"%@",dic1);
//3.字典快速生成
NSDictionary *dic2 = @{@"key1":@"1",@"key2":@"abc",@"key3":dic1};
NSLog(@"%@",dic2);
//4.查询一个对象:objectForKey:(常用方法)
NSString *dicStr = [dic2 objectForKey:@"key2"];
NSLog(@"%@",dicStr);
//5.取出字典的所有的键
NSArray *allKs = [dic2 allKeys];
NSLog(@"%@",allKs);
//6.取出所有对象:allValues
NSArray *allVs = [dic2 allValues];
NSLog(@"%@",allVs);
#pragma make - NSMutableDictionary可变字典
//1.遍历构造
NSMutableDictionary *dicc = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"1", @"key1",@"2",@"key2",@"3",@"key3",ni<span style="white-space:pre"> </span>l];
NSLog(@"%@",dicc);
//2.增:setObject:forKey:
[dicc setObject:@"4" forKey:@"key4"];
NSLog(@"%@",dicc);
//3.删:removeObjectForKey:
//4.查:objectForKey:
//5.改:setObject:forKey:(覆盖指定key下对应的值)
#pragma make - 字典遍历
NSArray *keys = [dicc allKeys];
//1.for循环遍历
for (int i = 0; i<[keys count]; i++) {
NSLog(@"%@",[dicc objectForKey:[keys objectAtIndex:i]]);
}
//2.快速枚举
for(id var in dicc){
NSLog(@"%@",[dicc objectForKey:var]);
}
//3.1-100 key1=1 key2=2 ......
10. NSSet的相关操作
#pragma make - NSSet
NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"3",@"4", nil];
NSLog(@"%@",set1);
NSArray *array = @[@"1",@"2",@"3",@"4"];
//将有序数组转化为无序数组
NSSet *set2 = [NSSet setWithArray:array];
NSLog(@"%@",set2);
//将无序转化为有序
NSArray *array2 = [set2 allObjects];
NSLog(@"-------%@",array2);
11.简单数据持久化
#pragma make - 简单数据持久化
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// [defaults setBool:YES forKey:@"isOpen"];//保存一个bool型的数据
// [defaults setInteger:99 forKey:@"level"];//保存一个Int型的数据
// [defaults setObject:@"this si hello!" forKey:@"text"];
BOOL isOpen = [defaults boolForKey:@"isOpen"];
NSInteger level = [defaults integerForKey:@"level"];
NSString *text = [defaults objectForKey:@"text"];
NSLog(@"level=%ld text=%@ isOpen=%d",level,text,isOpen);