1.+(void)fun; 类方法没有隐藏参数self所以 1类方法不能引用实例变量。2类方法不能调用对象的方法。 类名直接调用类方法 [CFLCar func];留下简单的对外接口 1.NSString 一个字符根据编码占不同字节 %@ 是不可改变的字符串,每一个字符都不能改。只能查询。 NSMutableString是NSString的子串,是可变字符串; (1)[str length] 字符串长度 [str characterAtlndex: i ]返回地 i 个字符; (2)创建 NSString * p=@“dfsfa”; [NSString stringWithString:@“%@ %@”,str,str2 ]; 复制 NSString * str5 = [NSString stringWithUTF8String:str2]; NSString * str4 = [NSString stringWithString:str1]; -(id)stringWithString; -(id)stringWithFormat -(id)stringWithUTF8String 2.字符串比较 //按字符串内容(逐个相比)比较大小 if(str1&&[str1 compare:str2]==NSOrderedSame){ NSLog(@"equal"); } else if([str1 compare:str2]==NSOrderedDescending){ NSLog(@"Descending"); } else { NSLog(@"Ascending"); } //比较相等 if([str1 isEqualToString:str2]==YES){ NSLog(@"相等"); } //判断子串开头、结尾 NSString *str6=@"13654125251"; if([str6 hasPrefix:@“136"]==YES){ NSLog(@"YES"); } if ([str6 hasSuffix:@"251"]) { NSLog(@“yes"); } 3.查找子字符串的位 置和范围 NSString * str1 = @"床前明月光"; NSRange range = [str1 rangeOfString:@"月"]; if (range.location!=NSNotFound) { NSLog(@"%lu,%lu",range.location,(unsigned long)range.length); } 4.子串提取 NSString * str = @"Hello,world"; NSString * str1 = [str substringToIndex:5]; NSString * str2 = [str substringFromIndex:6]; NSString * str3 = [str substringWithRange:NSMakeRange(0, 5)]; NSLog(@"%@ %@ %@",str1,str2,str3); 5.字符串转其他类型 char name[20] = "Tom"; //c strng to NSString NSString * str1 = [NSString stringWithFormat:@"%s",name]; NSString* str2 = [NSString stringWithUTF8String:name]; NSLog(@"%@ %@",str1,str2); //NSString to C string const char *str3 = [str1 UTF8String]; NSLog(@"%s",str3); //NSString <==> number NSString * str4 = @"123"; NSLog(@"%d %g",[str4 intValue],[str4 doubleValue]); //大小写zhuanh NSString * str5 = @"dskdjJKLKLK"; NSString * str6 = [str5 uppercaseString]; NSLog(@"%@ %@",str6,[str5 lowercaseString]); //字符拼接 NSLog(@"%@",[str5 stringByAppendingFormat:@"%@",str6]); 6.可变字符串 NSMutableString 继承自 NSString 1.凡是NSString的方法,NSMutableString都能用 2.凡是传参需要传入NSString * 传入NSMutableString *也行 【专有方法】 1.重置字符串内容 [str setString:@"0123456789"]; 2.增 append [str appendString:@"9876543210"]; [str appendFormat:@"%d %c %.2f", 34, 'T', 2.34]; 3.插入 [str insertString:@"ABC" atIndex:3]; 4.删 delete [str deleteCharactersInRange:range]; 5.改 replace [str replaceCharactersInRange:range withString:@“XXXXXXXXXXXXXXX”];(先找到range 用rangeofstring函数着字符串) 6查 rangeOfString: 7.字符串去除两端内容 NSString * str4 = @"kkd123ld"; //stringByTrimmingCharactersInSet去除字符串两端指定字符集内的字符 //去掉首尾两端的空格 NSString* str5 = [str4 stringByTrimmingCharactersInSet:[NSCharacterSet letterCharacterSet]]; NSLog(@"%@ %@",str4,str5); NSString * str6 = @",md123./"; NSCharacterSet * mySet = [NSCharacterSet characterSetWithCharactersInString:@",md./"]; NSString * str7 = [str6 stringByTrimmingCharactersInSet:mySet]; NSLog(@"%@",str7); 删除字符串;=剩余元素以;=为分割的对象保存到数组 NSArray *array=[str2 componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"; =“]]; 8.将文件已字符串形式读入 NSString *p=[NSString stringWithContentsOfFile:@"/Users/qianfeng/Desktop/未命名.rtf" encoding:NSUTF8StringEncoding error:nil]; (路径、编码方式、nil) 9.判断字符串中是否含有 某种类型的 元素 NSString *testString = @"春1mianBU觉晓"; int alength = [testString length]; for (int i = 0; i<alength; i++) { char commitChar = [testString characterAtIndex:i]; NSString *temp = [testString substringWithRange:NSMakeRange(i,1)]; const char *u8Temp = [temp UTF8String]; if (3==strlen(u8Temp)){ NSLog(@"字符串中含有中文"); }else if((commitChar>64)&&(commitChar<91)){ NSLog(@"字符串中含有大写英文字母"); }else if((commitChar>96)&&(commitChar<123)){ NSLog(@"字符串中含有小写英文字母"); }else if((commitChar>47)&&(commitChar<58)){ NSLog(@"字符串中含有数字"); }else{ NSLog(@"字符串中含有非法字符"); } } id 是通用 对象 指针 内置类型要放到数组,需要封装 int a=10; NSNumber *numA=[NSNumber numberWithInt:a];(封装对象)numA是对象 int b = [numA intValue];(解封装) 3.NSArray数组元素类型是id,是对象的地址。可以储存不同类型的对象 是不可变数组 NSMutableArray是可变数组 1.初始化 NSArray * a=[NSArray arrayWithObjects:@"1",@"2", nil]; NSArray *c=@[@“1”,@"2"]; NSArray *c=@[str1,str2]; 2.遍历 (1)循环 NSInteger len=[c count]; 元素个数 id p = [c objectAtIndex: i ];得到制定下标的数组元素(对象地址) (2)快速枚举 只能访问oc对象集合 for (id p in c) { NSLog(@“%@“,p); (从头开始逐一给p直到c为nil。p最后为nil) } 注意一个问题。在枚举期间不能修改集合 (3)枚举器 NSEnumerator * enumer=[c objectEnumerator]; id p; while(p = [enumer nextObject]){ NSLog(@“%@”,p); } //创建一个逆序枚举器NSEnumerator * enume2 = [array reverseObjectEnumerator]; while (obj = [enume2 nextObject]) { NSLog(@"obj = %@",obj); } (1)(3)可增删数组元素 (2)速度较快 3.判定数组是否包含某个元素 BOOL is=[a containsObject:@“man”]; if (is){ NSLog(@“YES”); } 4.得到数组第一个对象,最后一个对象(last) NSLog(@"%@",[c firstObject]); 5.数组查找 NSLog(@"%lu",[c indexOfObject:@“2"]); 内容比较 返回下标 NSLog(@"%lu",[c indexOfObjectIdenticalTo:@“2"]) 地址查找 6.数组排序 前两种方法 sortedArrayUsingFunction:中函数必须自己写 NSArray *sortedArray = [array sortedArrayUsingFunction:compare context:nil]; //先比较姓 在比较名字 -(NSComparisonResult)compareLastName:(student*)stu{ NSComparisonResult result = [self.lastname compare stu.lastname]; if(result==NSOrderedSame){ result=[self.firstname compare:stu.firstname]; } return result; } //输出用description重写 -(NSString* )description { return [NSString stringWithFormat:@“%@%@“,self.lastname,self.firstname]; } 使用selector排序 (排序后产生新数组的不变的数组,原来数组不变,所以要用新的数组接收这个返回值); sortedArrayUsingSelector 数组元素是foundation类的对象,不需要写比较方法,调用响应的类的比 较方法就可以 如果数组元素是自定义类的对象,在你的类里必须自己写一个比较函数 NSArray * array 2= [array sortedArrayUsingSelector:@selector(compare:)];调用compare方法进行排序默认从小到大 NSLog(@"%@",sortedArray); 6.可变数组 NSMutableString *array=[[NSMutableArray alloc] init]; //增 追加 [array addObject:@"Four"]; //插入 [array insertObject:@"Four" atIndex:1]; //删 [array removeAllObjects]; [array removeLastObject]; //删除指定索引处元素 [array removeObjectAtIndex:1]; //传入地址,删除指定元素,如果传入的是字符串,删除所有和字符串相等的元素。 [array removeObject:@"One"]; //改 //用某个对象,替换当前某索引处的元素 [array replaceObjectAtIndex:0 withObject:@"Five"]; //交换两个元素的位置 [array exchangeObjectAtIndex:0 withObjectAtIndex:2]; /*—————————————数组元素拼接成字符串 把数组元素拼接 成字符 NSString * ptr = [array componentsJoinedByString:@“###"]; 删除字符串;=剩余元素以;=为分割的对象保存到数组 NSArray *array=[str2 componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"; ="]]; NSDictionary 字典 NSMutableDictionary可变字典 字典时无序的,对字典排序,应先生称数组,对数组排序 字典对象是由 键—值对象构成的数据集合;同一字典,键必须唯一。 键值对是无序的 1.创 建 NSDictionary *dict1=[NSDictionary dictionaryWithObjectsAndKeys:s1,@“o1”,@“k1”,@“o2”,@“k2” nil];//值 键 NSDictionary *dict2=@{@“101":s1,@"102":s2,@"103":s3,@"104":s4};//键 值 2.存 取 NSLog(@"%@",[dict2 objectForKey:@“101"]); 得到@“101”所对应的值 NSLog(@"%@", dict2[@“102”]);得到键所对应的值 NSArray *key =[dict2 allKeys]; 得到所有的键 NSLog(@"%@",key); NSArray *valuis=[dict2 allValues]; 得到所有的键值 NSLog(@“%@",valuis); 3.遍 历 //根据键的数组遍历值(优先选择) for (NSString * key in dict2) { NSLog(@"%@ %@",key,dict2[key]); } //枚举器 NSEnumerator *keyEnumerator =[dict2 keyEnumerator]; NSEnumerator *key; while(key=[keyEnumerator nextObject]){ NSLog(@"%@ %@",key ,dict2[key]); } 4.排 序 NSArray *result= [dict2 keysSortedByValueUsingSelector:@selector(compare:)]; ( 根据值的内容重写compare) NSLog(@"%@",result); //对值的内容排序,自定义compare函数 5.可变字典 1.创建 NSMutableDictionary *dict2=[NSMutableDictionary dictionaryWithCapacity:0]//有0个键值对的可变字典 NSMutableDictionary *dict =[[NSMutableDictionary alloc]init]; //不能用 NSMutableDictionary *dict=@{@“101":@"tom",@"102":@"jerry"} 2.赋值 [dict2 setDictionary:@{@"101":@"tom",@"102":@"jerry"}]; [dict2 setObject:@"zhabg" forKey:@"103"];// 如果有103这个键那就是修改。没有就初始