日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC中的基本容器和基本数据类型

發布時間:2023/11/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC中的基本容器和基本数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本數據類型

NSRange

是一個結構體,里面有兩個數據成員數據類型都為NSUInteger 就是c語言中的無符號整形,一個是location表示集合的起始地址,另外一個變量是length表示從起始地址開始算多少個元素。

NSRange的三種創建方式

//1.NSRange range;range.length = 10;range.location=3;//2.NSRange rang1 = {1,2};//3.NSRange rang2 = NSMakeRange(1, 7);

NSRange的一些方法

將NSRange轉化為NSString類型

//快速打印rangeNSString *str = NSStringFromRange(range);NSLog(@"%@",str);

NSPoint

NSPoint其實就是CGPoint

NSPoint創建方式

跟NSRange一樣,也是三種方法

NSPoint p;p.x = 10;p.y = 10;NSPoint p3 = {3,2};NSPoint p2 = NSMakePoint(2, 3);

NSPoint的一些方法

將NSPoint轉為NSString

NSString *str = NSStringFromPoint(p);NSLog(@"%@",str);

NSSize

本質就是CGSize,NSSize就是一個結構體,兩個成員高度height,寬度width

NSSize的使用

void size(){NSSize size;size.width = 100;size.height = 90;size = NSMakeSize(3, 4);NSString *str = NSStringFromSize(size);NSLog(@"%@",str); }

NSRect

NSRect是一個結構體,這個結構體兩個成員一個是NSPoint另外一個是NSSize;

NSRect的使用

NSRect rect;rect.origin.x = 10;rect.origin.y = 20;rect.origin = NSMakePoint(10, 33);rect.size = NSMakeSize(12, 30);rect = NSMakeRect(10, 20, 30, 40);NSLog(@"%@",NSStringFromRect(rect));

基本容器

NSString

與C++中String類的功能很像,NSString是OC中存儲字符串類型的一種容器,但是NSString內容是不可變的

NSString 的實例的創建

動態方法創建

NSSting實例的創建有很多種方式

  • 直接賦值一個字符串,此時字符串為常量字符串
  • 分配空間再進行初始化,此時還沒有賦值默認為nil,需要對其進行賦值操作
  • 分配空間時進行有參數的構造
  • 用c語言格式字符串對NSString進行初始化
  • 帶有格式化參數對NSString進行賦值操作
  • //這中方式創建是常量字符串NSString *str1 = @"A String";//先分配空間再進行初始化NSString *str2 = [[NSString alloc] init];str2 = @"A String";//分配空間后進行帶有參數的構造NSString *str3 = [[NSString alloc] initWithString:@"A string"];//分配空間后將char類型的的字符串轉為NSString類型進行構造NSString *str4 = [[NSString alloc] initWithUTF8String:"A string"];str4 = [NSString stringWithUTF8String:"LOUE"];//帶有格式化參數的初始化NSString * str5 = [[NSString alloc] initWithFormat:@"my age is %i and my height is %.2f ",19,1.22]; NSLog(@"str5 = %@",str5);

    靜態方法創建

    除了用動態方法可以創建字符串實例外,動態方法也可以創建字符串實例。
    基本就是將init替換成string,其余都基本一樣

    //string with開頭為靜態方法,作用與相應的initWith開頭的動態方法一樣 str3 = [NSString stringWithString:@"LOUE"];

    文件操作

    讀取文件內容

    指定字符集為UTF-8

    //從文件中讀取文本NSString *path = @"/Users/bytedance/Desktop/1.txt";NSString *str1 = [NSString stringWithContentsOfFile: path encoding:NSUTF8StringEncoding error:nil];NSLog(@"str1 = %@",str1);

    如果想要指定字符集為GBK的話,需要進行類型的轉化

    寫入文件內容

    //將字符串導出到文件 void stringCreate3(){NSString *str1 = @"啦啦啦啦啦啦啦";NSString *path = @"/Users/bytedance/Desktp/1.txt";NSError *error;//第二參數如果是yes,則先創建一個臨時文件將數據寫入臨時文件,如果中途出錯,則不寫入目標文件//如果文件不存在則會幫忙創建//如果文件夾布村則會報錯//覆蓋掉原來文件內容[str1 writeToFile: path atomically:YES encoding:NSUTF8StringEncoding error:&error];if(error){//寫入失敗NSLog(@"寫入失敗 %@" ,[error localizedDescription]);}else {NSLog(@"寫入成功");} }

    NSString中的一些實例方法

    大小寫處理

  • uppercaseString
  • lowercaseString
  • capitalizedString
  • void stringCreate4(){NSString *str = @"GuangDong";//轉成大寫NSLog(@"大寫 : %@",[str uppercaseString]);//轉成小寫NSLog(@"小寫 : %@",[str lowercaseString]);//首字母變大寫,其他字母變小寫NSLog(@"is %@",[str capitalizedString]); }

    字符串比較

  • isEqualToString 比較字符串內容是否相等,不忽略大小寫
  • 按字典順序比較字符串compare,不忽略大小寫
  • caseInsensitiveCompare,忽略大小寫
  • void stringCreate5(){//字符串比較//檢測字符串內容是否相同BOOL res = [@"abc" isEqualToString:@"ABc"];NSLog(@"%i",res);//右邊比左邊大為升序//左邊比右邊大為降序//一樣大為相等//按字典序比較字符串大小//返回值為枚舉類型NSComparisonResult res1 = [@"abc"compare:@"Abc"];if(res1 == NSOrderedSame){NSLog(@"一樣大");}else if(res1 == NSOrderedAscending){NSLog(@"右邊比左邊大");}else {NSLog(@"左邊比右邊大");}//忽略大小寫進行比較NSComparisonResult res2 = [@"abc" caseInsensitiveCompare:@"ABc"];if(res2 == NSOrderedSame){NSLog(@"一樣大");}else if(res2 == NSOrderedAscending){NSLog(@"右邊比左邊大");}else {NSLog(@"左邊比右邊大");} }

    字符串搜索

  • hasPrefix 判斷字符串是否以某個前綴開頭
  • hasSuffix判斷字符串是否以某個后綴結尾
  • rangOfString查找字符串
  • NSString *p = @"123455.3333xddd";//判斷字符串是否以某個前綴開頭NSLog(@"p is %i",[p hasPrefix:@"12"]);//判斷字符串是否以某個后綴結尾NSLog(@"p is %i",[p hasSuffix:@"ddd"]);//查找字符串中是否包含某個字符串//找到返回在p中的起始位置,和長度是以結構體的形式返回,需要轉換為字符串進行輸出//如果不存在長度返回的是0,起始位置是一個long類型的最大值NSRange range = [p rangeOfString:@"345"];if(range.location == NSNotFound || range.length == 0){NSLog(@"找不到");}else{NSLog(@"找到");}//反向搜索NSRange range1 = [p rangeOfString:@"455" options:NSBackwardsSearch];if(range1.location == NSNotFound ){NSLog(@"找不到");}else{NSLog(@"找到");}//指定范圍搜索NSRange s;s.location = 8;s.length =4;NSRange range2 = [p rangeOfString:@"455" options:NSBackwardsSearch range:s];

    字符串的截取

  • substringFromIndex從索引位置截取到末尾
  • substringToIndex 從開始位置截取到索引位置之前
  • componentsSeparatedByString切割字符串
  • void stringCreate7(){NSString *str = @"123456";//從索引3開始截取到尾部NSLog(@"%@",[str substringFromIndex:3]);//從頭部開始截取到某個索引位置,不包括索引NSLog(@"%@",[str substringToIndex:4]);//截取范圍內的字符串NSRange s;s.location =2;s.length = 3;NSLog(@"%@",[str substringWithRange:s]);//切割字符串NSString *str2 = @"1,2,3,4,5";//以,進行分割NSArray *array = [str2 componentsSeparatedByString:@","];//%@默認調用對象的decribtion方法打印對象中的所有元素NSLog(@"%@",array); }

    NSString與路徑

  • pathWithComponents 將數組中的元素拼接成一個路徑
  • 把一個路徑分解成數組 pathComponents
  • isAbsolutePath判斷是否為絕對路徑
  • lastPathComponent返回最后一個文件夾的名稱
  • stringByDeletingLastPathComponent刪除最后一個文件夾
  • stringByAppendingPathComponent最后拼接一個目錄
  • void stringCreate8(){//與路徑相關的API//快速創建一個自動釋放的數組NSMutableArray* compoments = [NSMutableArray array];[compoments addObject:@"ABC"];[compoments addObject:@"Deecc"];[compoments addObject:@"Kooo"];NSString *path = [NSString pathWithComponents:compoments];NSLog(@"%@",path);//把一個路徑分解成數組NSArray * array = [path pathComponents];NSLog(@"%@",array);//判斷是否為絕對路徑path = @"users/mj/test";//path的值一直沒有變,改變的都是返回值NSLog(@"%i",[path isAbsolutePath]);//返回最后一個文件夾名NSLog(@"最后一個文件夾名%@",[path lastPathComponent]);//刪除最后一個文件夾NSLog(@"%@",[path stringByDeletingLastPathComponent]);//最后拼接一個目錄NSLog(@"%@",[path stringByAppendingPathComponent:@"abc"]);}

    與拓展名相關

  • pathExtension 獲取拓展名
  • stringByDeletingPathExtension 刪除拓展名
  • stringByAppendingPathExtension 拼接拓展名
  • void stringCreate9() {//刪除拓展名NSString *str = @"/User/M3/test.txt";NSLog(@"拓展名:%@",[str pathExtension]);NSLog(@"%@",[str stringByDeletingPathExtension]);//拼接拓展名NSLog(@"%@",[@"abc" stringByAppendingPathExtension:@"mp3"]); }

    與基礎數據類型有關

  • intValue將字符串轉為整數
  • length統計字符串的個數
  • 取出對應索引位置的字符characterAtIndex
  • UTF8String 將NSString轉為c語言中char
  • void stringCreate10(){NSString *str = @"100";int a = [str intValue];NSLog(@"%i",a);//計算字數并不是字符數,一個中文占兩個字符但只計為1NSLog(@"length = %zi",[@"我是字符串123"length]);// 取出對應索引位置的字符unichar c = [@"abc" characterAtIndex:0];NSLog(@"%c",c);//轉劃為c語言中的charchar *s = [@"abc" UTF8String];NSLog(@"%s",s); }

    NSMutableString

    OS中的可變字符串類型,NSMutableString是NSString的子類,所以NSString的方法,NSMutableString都可以用

    NSMutableString的實例化

  • 動態方法 initWithcapacity:空間大小
  • 靜態方法 stringWithCapacity
  • //預先分配10個字符的存儲空間NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];NSMutableString *str2 = [NSMutableString stringWithCapacity:10];

    NSMutableString的一些實例化方法

  • appendString拼接一個字符串
  • appendFormat拼接一個格式化的字符串
  • replaceCharactersInRange替換字符串
  • insertString插入字符串
  • deleteCharactersInRange刪除字符串
  • //拼接一個字符串[str appendString:@"567"];[str appendFormat:@"age is %i and height is %.2f ",27,1.55];//替換字符串//查到age的范圍NSRange range = [str rangeOfString:@"age"];[str replaceCharactersInRange:range withString:@"no"];//插入字符串[str insertString:@"abc" atIndex:2];NSLog(@"%@",str);//刪除字符串range = [str rangeOfString:@"abc"];[str deleteCharactersInRange:range];

    總結

    以上是生活随笔為你收集整理的OC中的基本容器和基本数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。