OC-字典

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这个键那就是修改。没有就初始
原文地址:https://www.cnblogs.com/hezhuangzhuang/p/5112134.html