程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> oc中的數組:NSArray

oc中的數組:NSArray

編輯: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個元素,分別為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)//和java中一樣,采用==來判斷兩個字符串是否相等時,判斷的是地址是否相等,而不是內容是否相等     {        NSLog(@"== 相等");     }     if ([strisEqualToString:str4]) {//和java中的類似,判斷兩個字符串的內容是否相等,采用isEqualToString函數         NSLog(@"isEqualToString 相等");     }    //四、字符串的大小比較     //采用 compare方法,返回枚舉類型[-1,0,1],NSOrderedAscending(1)升序,前者大於後者、NSOrderedSame(0)相等,前者等於後者、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包含兩個成員:location和length;其中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]);//每句首字母大寫    //九、字符串的替換     //1、stringByReplacingOccurrencesOfString方法(全部替換)     NSString *str9=@"2B青年aa,2B青年dd,2B青年ff,2B青年xx";     //將字符串str9中的“2B”替換成“文藝”     NSLog(@"%@",[str9 stringByReplacingOccurrencesOfString:@"2B"withString:@"文藝"]);     //2、stringByReplacingCharactersInRange方法(在一定范圍內替換)     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(@"可變字符串");     // NSMutableString為NString的子類,繼承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; }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved