欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

objective-C Ⅱ,

来源: 开发者 投稿于  被查看 26828 次 评论:174

objective-C Ⅱ,


objective-C Ⅱ

     接第一讲 objective-c初识 一、oc中的数组:NSArray 定义: NSArray *arrayName=[NSArray arrayWithObjects:obj1,obj2,obj3,obj4,nil];//数组是以nil空作为结束的标志 使用: for(int i=0;i<4;i++) { Object *obj=[arrayName objectAtIndex:i]; [obj  functionName]; } 例如:

//数组的使用

//定义四个Student类型的变量 并初始化

  

    Student *stu1=[StudentstudentWithName:@"唐僧"andSex:YESandAge:23andAddress:@"大唐"];

    Student *stu2=[StudentstudentWithName:@"悟空"andSex:YESandAge:23andAddress:@"花果山"];

    Student *stu3=[StudentstudentWithName:@"八戒"andSex:YESandAge:23andAddress:@"高老庄"];

    Student *stu4=[StudentstudentWithName:@"沙僧"andSex:YESandAge:23andAddress:@"流沙河"];

   //数组的定义和初始化(数组是以nil空作为结束的标志的)

    NSArray *students=[NSArrayarrayWithObjects:stu1,stu2,stu3,stu4,nil];//定义一个数组名为 students元素类型全部为Student 元素个数为4的数组

          //利用for循环使用数组中的元素

   for (int i=0; i<4; i++) {

       //根据数组的索引取出相应的对象

       Student *stu=[students objectAtIndex:i];

        //调用取出对象的sayHi方法

        [stusayHi];

    }

   //数组中的元素可以是多种类型

   //数组元素不能存放基本的数据类型(如int float..

   //如果存放基本数据类型,要把它先转换成NSNumber的对象 例如:

    NSArray *arrays=[NSArrayarrayWithObjects:stu1,@"张三",[NSDate date], [NSNumbernumberWithInt:20],nil];//定义了一个名为array的数组,该数组中包含4个元素,分别为StudentStringDateNumber类型

   //注意:在打印引用型对象是,默认的是打印类的类型和内存地址,在.m文件中改写description方法(相当于java中的toString方法),可以改变其输出形式 在.m文件中改写后的description方法

          /**   在.m文件中重写后的description方法    [不用在.h文件中定义接口

]

     //重写description方法 相当于java中的toString方法

     -(NSString *)description//重写description方法后,让其输出姓名(也可以是其他自定义的字符串等)

     {

       returnname;

     }

         */


   //包含不同类型的数组的使用

   for (int i=0; i<4; i++) {

       //根据数组的索引取出相应的对象

        id  arry=[arraysobjectAtIndex:i];//id为泛型 是指任意类型的对象 定义id泛型对象时不在变量前加*

       //直到赋值的时候才确定是什么类型

       NSLog(@"%@",arry);

    }

    NSLog(@"for-in的使用");

   //for-in 的使用java中的一样,循环的次数依赖与数组元素的个数

   for (id tempin arrays) {

       NSLog(@"%@",temp);

    }

    //NSArray的子类NSMutableArray为可变的数组  可以进行增删改查

//    NSMutableArray *mArray=[[NSMutableArray alloc]init];

    NSMutableArray *mArray=[NSMutableArrayarrayWithObjects:stu1,@"aaa",@"abc",nil];

//    //NSMutableArray是可变数组,是NSArray的子类,里面的元素可以增删改查

    NSLog(@"数组的长度%ld",[mArray count]);//输出数组的长度(元素的个数)调用count方法,采用长整型站位符

   //向数组中添加元素

    [mArrayaddObject:@"cccc"];

    [mArray addObject:[NSNumbernumberWithBool:YES]];

    NSLog(@"添加后的数组元素");

   NSLog(@"%@",mArray);

   //删除数组中的元素

    [mArray removeObjectAtIndex:0];//删除下标为0的元素即第一个元素

    NSLog(@"删除第一个元素后的数组元素");

   NSLog(@"%@",mArray);

//注:按住windows键和鼠标左键可以查看类的.h文件,以便于我们更加清楚的了解该类中的方法,更好的使用该类

    //NSMutableArray中的扩展方法

//    - (void)addObject:(id)anObject;

//    - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

//    - (void)removeLastObject;

//    - (void)removeObjectAtIndex:(NSUInteger)index;

//    - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

二、集合的使用

         集合中只能存放对象类的元素,要想存放基本数据类型的元素,要先将其转换为对象类再进行存放,集合中存放的数据元素可以是不同类型的和数组一样

Set集合

//Set集合

    //定义和初始化

   NSSet *set=[NSSetsetWithObjects:@"aa",@"bb",@"cc",nil];

   //set集合中的元素是无序的唯一存在的 相互独立的长度是不可变的

    //set集合的使用

   NSLog(@"%@",set);

   NSLog(@"%@",[setanyObject]);//取出set里面的所有元素

    //Set集合的子类NSMutableSet类似于Array的子类是可变长度的集合 也可以增加删除元素

   //按住windows键和鼠标左键可以查看其中定义的方法来进行使用


三、字符串 Cocoa为我们准备了一个与字符串操作相关的结构体NSRange NSRange:     表示相关事物的范围,包含两个成员,一个是长整型location,表示起始位置,另外一个是长整型length表示长度
                 比如要得到一个起始位置为10,3个长度的范围,它可以有三种方式创建:
第一种调用函数可以这么写:
  NSRange range =NSMakeRange (10,3);
第二种直接给成员赋值:
NSRange range;
        range.location=10;
        range.length=3;
第三种应用C语言的聚合结构赋值机制:
NSRange range ={10,3};
字符串的使用:(如下)

int main(int argc,const char * argv[])

{

   //一、字符串的创建

   //第一种直接创建

   NSString *str=@"zhangsan";

   //创建空的字符串

   NSString *str1=[[NSStringalloc]init];

    NSLog(@"str=%@,str1=%@",str,str1);

    //依赖创建 str2相当于是str的指针

    NSString *str2=[NSStringstringWithString:str];//str2依赖strstr释放后,str2变空

   NSLog(@"str2=%@",str2);

    //第四种重点 

   NSString *str3=[NSStringstringWithFormat:@"%@ love iPhone%d5.",str,5];

   NSLog(@"%@",str3);

    

   //二、字符串的长度

   NSLog(@"str3的长度是:%ld",[str3 length]);

    

   //三、字符串的比较

   NSString *str4=[NSStringstringWithFormat:@"zhangsan"];

   if(str==str4)//java中一样,采用==来判断两个字符串是否相等时,判断的是地址是否相等,而不是内容是否相等

    {

       NSLog(@"== 相等");

    }

    if ([strisEqualToString:str4]) {//java中的类似,判断两个字符串的内容是否相等,采用isEqualToString函数

        NSLog(@"isEqualToString 相等");

    }

   //四、字符串的大小比较

    //采用 compare方法,返回枚举类型[-1,0,1],NSOrderedAscending(1)升序,前者大于后者、NSOrderedSame0)相等,前者等于后者、NSOrderedDescending-1)前者小于后者

   //compare从第一个字母开始往后比较,比较的是字母的ASC

   NSString *str5=@"abc";

   switch ([str4 compare:str5] ) {

        caseNSOrderedAscending:

           NSLog(@"大于");

           break;

        caseNSOrderedSame:

           NSLog(@"等于");

           break;

        caseNSOrderedDescending:

           NSLog(@"小于");

           break;

       default:

           break;

    }

    //五、前缀 后缀 的判断

    //后缀的判断用  hasSuffix函数返回bool类型

   NSString *str6=@"IOS.doc";

    if ([str6hasSuffix:@".doc"]) {//判断str6是否是以.doc结尾

        NSLog(@"这是一个word文档");

    }

    //前缀的判断用  hasPrefix函数返回bool类型

    NSString *str7=@"http://www.baidu.com";

    if ([str7hasPrefix:@"http://"]) {//判断str7是否以http://开头

       NSLog(@"这是一个网址");

    }

    //六、查找子字符串 rangeOfString函数

   //NSRange为一个结构体,在定义变量的时候不需要在变量前加*

   //NSRange包含两个成员:locationlength;其中localtion表示字符串的位置(一般都是从0开始的),length表示字符串的长度表示一个字符串的范围

   NSRange range=[str7 rangeOfString:@"www"];//定义一个结构体变量,并为其赋初值

    if (range.location!=NSNotFound)//查找子字符串在父字符串中的位置range.location

    {

        NSLog(@"location:%ld,length:%ld",range.location,range.length);

    }else

    {

       NSLog(@"未找到字符串");

    }

   //七、截取子字符串

    NSLog(@"%@",[str7substringFromIndex:7]);//从位置为7的位置到最后(包含第七个位置)

    NSLog(@"%@",[str7substringToIndex:7]);//从开头到第七个位置(不包含第七个位置)

    NSLog(@"%@",[str7substringWithRange:range]);//range范围截取字符串

   //八、字符串的转换

   NSString *str8=@"123";

    int num=[str8intValue];//将字符串str8转换成int基本类型

   NSLog(@"%d",num);

    NSLog(@"%@",[str7 uppercaseString]);//转换成大写

    NSLog(@"%@",[str7 lowercaseString]);//转换成小写

    NSLog(@"%@",[str7 capitalizedString]);//每句首字母大写

   //九、字符串的替换

    //1stringByReplacingOccurrencesOfString方法(全部替换)

    NSString *str9=@"2B青年aa,2B青年dd,2B青年ff,2B青年xx";

    //将字符串str9中的“2B”替换成文艺

    NSLog(@"%@",[str9 stringByReplacingOccurrencesOfString:@"2B"withString:@"文艺"]);

    //2stringByReplacingCharactersInRange方法(在一定范围内替换)

    NSLog(@"%@",[str9 stringByReplacingCharactersInRange:NSMakeRange(0,2) withString:@"文艺"]);//0~2范围内的子字符串替换成目标字符串替换的长度可以不一样

   //十、字符串的切割 返回一个数组

    NSArray *arr=[str9 componentsSeparatedByString:@","];//“,”为界进行字符串的切割,将切割后的字符串放进arr数组中

   NSLog(@"%@",arr);

   //十一、字符串的拼接拼接后的新字符并没有改变原字符串中的内容 而是生成了一个新的字符串

//    NSString *str8=@"123";

   //第一种、直接在原字符串后加新字符串进行拼接

    NSLog(@"%@",[str8stringByAppendingString:@"abc"]);

   //第二种、采用字符串格式符进行拼接

    NSLog(@"%@",[str8stringByAppendingFormat:@"iPhone%d5",5]);

  //十二、可变字符串  NSMutableString

    NSLog(@"可变字符串");

    // NSMutableStringNString的子类,继承NSString所有得方法

    NSMutableString *mstr=[[NSMutableString alloc]init];//定义一个空字符串

    NSLog(@"%@",mstr);//输出

    //1、拼接字符串  NSString不同的是 NSMutableString拼接字符串是在原字符串的基础上拼接的,没有生成新的字符串,而是改变了原来字符串的样式  

    [mstr appendString:@"iphone5"];//普通拼接方式

     NSLog(@"%@",mstr);//输出

    [mstr appendFormat:@"ipad%d",4];//format拼接方式

    NSLog(@"%@",mstr);//输出

    //2、删除字符串中的字符 删除一个范围

    NSRange rang=[mstr rangeOfString:@"ipad"];//查找“ipad”所在的范围

    if(rang.location!=NSNotFound)

    {

        [mstr deleteCharactersInRange:rang];

    }

    else

    {

        NSLog(@"未找到字符串,删除失败。");

    }

    NSLog(@"%@",mstr);



   return 0;

}

四、课后练习

int main(int argc, const char * argv[])

{

    //第一题:将Hello World and Sunshine 子复查unzhong“World”替换为“iBokan” 两种方式

    NSString *str=@"Hello World and Sunshine";

    NSLog(@"%@",str);

    NSLog(@"%@",[str stringByReplacingOccurrencesOfString:@"World" withString:@"iBokan"]);

    NSLog(@"%@",str);

    NSLog(@"%@",[str stringByReplacingCharactersInRange:NSMakeRange(6, 5) withString:@"iBokan"]);

    

    //第二题:求字符串“158”“39”按十进制数值做差后的结构以字符串形式输出

    NSString *num1=@"158";

    NSString *num2=@"39";

    int n1=[num1 intValue];

    int n2=[num2 intValue];

    int result=n1-n2;

    NSString *jieguo=[NSString stringWithFormat:@"%d",result];

    NSLog(@"%@",jieguo);

    //第二题可以缩写为:

    NSLog(@"%d-%d=%@",158,39,[NSString stringWithFormat:@"%d",[@"158" intValue]-[@"39" intValue]]);

    return 0;

}






较好文章博址:http://blog.csdn.net/amdbenq/article/details/7869166

































相关文章

    暂无相关文章

用户评论