当前位置:编程学习 > C/C++ >>

oc中的数组:NSArray

 
一、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个元素,分别为Student、String、Date、Number类型
   //注意:在打印引用型对象是,默认的是打印类的类型和内存地址,在.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依赖str,str释放后,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
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,