国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

iOSFoundation框架-2.常用集合類簡單總結(jié)

2019-11-14 20:35:43
字體:
供稿:網(wǎng)友

Foundation框架中常用的類有:NSStringNSArrayNSSetNSDictionary 以及它們對應(yīng)的子類 NSMutableString、NSMutableArray、NSMutableSet、NSMutableDictionary父類統(tǒng)一為不可變而子類可變,還包括NSDate、NSObject

可變和不可變的區(qū)別是對象內(nèi)容的可變和不可變,子類既然是繼承父類那么子類可以使用父類中的任意方法

1.NSString類的操作

  • 使用NSString類的對象初始化方法創(chuàng)建字符串    
  // 創(chuàng)建無參數(shù)的字符串
NSString *str2 = [[NSString alloc] initWithString:@"Jack"]; // 創(chuàng)建帶參數(shù)的字符串 NSString *str3 = [[NSString alloc] initWithFormat:@"age is %d",10]; // C字符串 轉(zhuǎn)換為 OC字符串 NSString *str4 = [[NSString alloc] initWithUTF8String:"Rose"]; // OC字符串 轉(zhuǎn)換為 C字符串 const char c = [str4 UTF8String]; // 讀取文件內(nèi)容第一種方式:讀取桌面下 getWeather.xml 文件里的所有內(nèi)容 NSString *str5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/getWeather.xml"
                     encoding:NSUTF8StringEncoding error:nil];
// NSUTF8StringEncoding 適用于使用中文的編碼格式 // 讀取文件內(nèi)容第二種方式 // URL:資源路徑 格式為:協(xié)議頭:// 比如本地文件的URL格式:file:// 網(wǎng)絡(luò)文件的URL格式:http:// 服務(wù)器文件的URL格式:ftp://
  NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/getWeather.xml"];
  // 如果訪問網(wǎng)絡(luò)就可以定義:http://www.baidu.com

NSString *str6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"/n%@",str6);
  • 使用NSString類方法創(chuàng)建字符串
    // 創(chuàng)建無參數(shù)的字符串    NSString *str2 = [NSString stringWithString:@"Jack"];        // 創(chuàng)建帶參數(shù)的字符串    NSString *str3 = [NSString stringWithFormat:@"age is %d",10];        // C字符串 轉(zhuǎn)換為 OC字符串    NSString *str4 = [NSString stringWithUTF8String:"Rose"];        // 讀取文件內(nèi)容第一種方式:讀取桌面下getWeather.xml文件里的所有內(nèi)容    NSString *str5 = [NSString stringWithContentsOfFile:@"file:///Users/apple/Desktop/getWeather.xml" encoding:NSUTF8StringEncoding error:nil];    // NSUTF8StringEncoding 適用于使用中文的編碼格式        // 讀取文件內(nèi)容第二種方式:讀取桌面下getWeather.xml文件里的所有內(nèi)容    NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/getWeather.xml"];    NSString *str6 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

  可以看出實(shí)現(xiàn)同一個功能NSString提供了對象方法和類方法兩種解決方式而類方法快捷方便,因此在實(shí)際開發(fā)中推薦使用類方法來操作字符串

 

  • 將字符串寫入到一個文件里
    // 給目標(biāo)文件中寫入字符串,兩種寫入方式在寫入之前都會將文件中的內(nèi)容全部清空后再寫入        // 第一種寫入方式    // atomically參數(shù)指寫入不成功時要不要停止    [@"java,iOS" writeToFile:@"/Users/apple/Desktop/getWeather.xml" atomically:YES encoding:NSUTF8StringEncoding error:nil];        // 第二種寫入方式    NSString *content = @"iOS,Java";    // NSURL提供了直接定義本地URL的類方法    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/getWeather.xml"];    [content writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

 

2.NSMutableString類的操作

  • NSMutableString繼承自NSString那么NSMutableString可以使用NSString類中的任意方法
  • NSMutableString提供了自己獨(dú)有的方法
    NSString *str = [NSString stringWithFormat:@"My age is 10 "];    NSString *str2 = [str stringByAppendingString:@"11 12"];    NSLog(@"%@",str2);      // 打印:My age is 10 11 12        NSMutableString *mutalbeStr = [NSMutableString stringWithFormat:@"My age is 10 "];    [mutalbeStr appendString:@"11 12"]; // appendString方法沒有返回值,說明是直接str字符串后面進(jìn)行拼接    NSLog(@"%@",mutalbeStr); // 打印:My age is 10 11 12    
// 可以看出:NSString一旦定義了str字符串它本身就不可變了,雖然NSString類方法也提供了拼接的方法如stringByAppendString方法但是它返回的是一個新的字符串。而NSMutableString提供的拼接方法appendString方法是在原有的字符串上直接拼接它沒有返回值。這就是可變和不可變字符串的本質(zhì)

    // NSMutableString 提供了刪除方法,比如說要刪掉上面可變字符串中的11有兩種方式:        // 第一種 必須要清楚要刪除內(nèi)容的location和length,11在整個字符串中的loc = 11 length = 2  (不推薦使用)    //[mutalbeStr deleteCharactersInRange:NSMakeRange(13, 2)];        // 第二種:先獲取要刪除內(nèi)容的范圍,然后刪除范圍內(nèi)的字符串    NSRange range = [mutalbeStr rangeOfString:@"11"];    [mutalbeStr deleteCharactersInRange:range];        NSLog(@"%@",mutalbeStr); // 打印:My age is 10  12

 

2.OC集合類的操作

(1) OC集合類包括NSArray,NSSet,NSDictionary都是以面向?qū)ο蟮姆绞?/span>操作數(shù)組,而且OC數(shù)組不像C語言中的數(shù)組只能存放同一種數(shù)據(jù)類型,它可以    存放任意類型的對象,但是不能存放非OC對象類型如基本數(shù)據(jù)類型int,struct,enum等

(2) OC數(shù)組是以對象的方式存在,因此在創(chuàng)建的時候需要為創(chuàng)建的對象前面加*

(3) NSArray數(shù)組一旦創(chuàng)建就決定了是不是可變,而且永遠(yuǎn)是可變或不可變

(4) NSArray數(shù)組和子類NSMutableArray的基本操作

    // 使用NSArray的類方法arry創(chuàng)建個數(shù)組    // 創(chuàng)建時定義為空數(shù)組,那么array數(shù)組將永遠(yuǎn)是空數(shù)組    NSArray *array = [NSArray array];
  •  NSArray的常見操作:
    // 創(chuàng)建數(shù)組對象有兩種方式     // 第一種方式:    NSArray *array = [NSArray arrayWithObjects:@"Jack",nil];    // 數(shù)組中包含了兩個NSString對象 nil是用來標(biāo)識數(shù)組元素結(jié)束的標(biāo)識    // 因此OC數(shù)組中不能存放空對象    NSArray *array1 = [NSArray arrayWithObjects:@"Jack",@"Rose", nil];    // 第二種方式:(推薦使用)    NSArray *array2 = @[@"Jack",@"Rose"];

    // 獲取數(shù)組的長度 array1.count;    NSUInteger count = [array1 count];    NSLog(@"%ld",count);
    // 訪問數(shù)組中的對象的兩種方式    NSString *str1 = [array1 objectAtIndex:0]; // 數(shù)組中索引為1的對象,OC中提供的方法 返回:Jack    NSString *str2 = array1[0];                // 編譯器特性其實(shí)還是轉(zhuǎn)為上面的形式來訪問 返回:Jack
    // 遍歷數(shù)組的三種方式    // 第一種:    for (int i = 0; i<array1.count; i++) {        NSLog(@"%@",array1[i]); // 數(shù)組中存放的是對象可以用%@輸出        if (i ==0) {            break;        }    }    
// 第二種:將array1數(shù)組中的每個對象拿出來賦給obj然后依次打印 for (id obj in array1) { // id obj 代表數(shù)組中的對象 // 獲取obj對象在數(shù)組中的索引 NSUInteger index = [array1 indexOfObject:obj]; NSLog(@"%ld-->%@",index,obj); }
// 第三種:使用Block 每次從數(shù)組中遍歷一個元素后就傳遞給block,block也相應(yīng)的執(zhí)行一次 // block中的id obj對應(yīng)數(shù)組中的元素,NSUInteger idx對應(yīng)數(shù)組中元素的索引 BOOL用來停止遍歷 [array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld-->%@",idx,obj); // 如果索引為0 立即停止遍歷 if (idx ==0) { *stop = YES; } }];
  •  NSMutableArray的基本操作:
  // 創(chuàng)建可變數(shù)組
NSMutableArray *mutableArray = [NSMutableArray array];
   // NSMutableArray
*mutalbeArray2 = @[@"張三",@"李斯"]; 注意:@[]返回的是不可變NSArray數(shù)組 這樣會報錯
  // 為可變數(shù)組增加任意對象
Person *person = [[Person alloc] init]; [mutableArray addObject:person]; [mutableArray addObject:@"Jack"]; [mutableArray addObject:@"John"]; // [mutableArray addObject:10]; 數(shù)組中不可以存放基本數(shù)據(jù)類型
    // 從數(shù)組中刪除指定的元素    [mutableArray removeObject:@"John"];    [mutableArray removeObjectAtIndex:0];    // 將數(shù)組中的元素全部刪除    [mutableArray removeAllObjects];

(5) NSSet數(shù)組和子類NSMutableSet的基本操作

  • NSSet和NSArray都是不可變數(shù)組,一旦創(chuàng)建就無法改變。NSSet是無序的集合簡單操作:
    // 創(chuàng)建NSSet集合    NSSet *set = [NSSet set]; // 一旦創(chuàng)建為空永遠(yuǎn)為空    NSSet *set2 = [NSSet setWithObjects:@"Jack",@"Rose",@"Jim",nil];        // 隨機(jī)獲取NSSet集合中的元素    NSString *str = [set2 anyObject];    NSLog(@"%@",str);
  • NSMutableSet的簡單操作:
    // 創(chuàng)建可變set集合    NSMutableSet *mutableSet = [NSMutableSet set];        // 為set添加集合    [mutableSet addObject:@"Jack"];    [mutableSet addObject:@"Rose"];        // 刪除元素    [mutableSet removeObject:@"Jack"];

 

(6) NSArray和NSSet數(shù)組的對比

  • 都是可以存放任意類型的OC對象的集合,都不能存放基本數(shù)據(jù)類型
  • 本身都是不可變的,但是子類都是可變的
  • NSArray是有序的集合,NSSet是無序的集合

(7) NSDictionary和NSMutableDictionary

  • NSDictionary和它的子類NSMutableDictionary都是以key/value的形式存在,NSDictionary本身為不可變集合
  • NSDictionary也是無序集合
  • 字典集合中存儲的值是以鍵值對的形式存在,如果存在相同的key那么后面key的值會被覆蓋。但是允許vaule的重復(fù)
  • NSDictionary的基本操作
    // 常見創(chuàng)建Dictionary集合的四種方式        // 1.創(chuàng)建一個空的字典集合類型    NSDictionary *dic = [NSDictionary dictionary]; // 一旦為空 永久為空        // 2.創(chuàng)建只有一組值的字典集合    NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"Jack" forKey:@"name"];        // 3.創(chuàng)建多個值的字典集合    NSArray *keys = @[@"name",@"address",@"e-mail"];    NSArray *values = @[@"Jack",@"北京",@"jack@163.com"];    NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:values forKeys:keys];        // 4.通過值/鍵的方式來創(chuàng)建    NSDictionary *dic4 = [NSDictionary dictionaryWithObjectsAndKeys:                          @"Jack",@"name",                          @"北京",@"address",                          @"jack@163.com",@"e-mail",nil];        // 5.類似于數(shù)組的創(chuàng)建方式 (推薦使用)    NSDictionary *dic5 = @{@"name":@"Jack",                           @"address":@"北京",                           @"e-mail":@"jack@163.com"};
    // 取值:根據(jù)相應(yīng)的Key取出對應(yīng)的值    NSString *name = [dic1 objectForKey:@"name"]; // 返回 Jack
    // 返回鍵值對的個數(shù)    NSUInteger count = dic5.count; // 返回 4
    // 遍歷NSDictionary數(shù)組用兩種方式:    // 第一種方式:    // 獲取字典中所有的鍵    NSArray *allKeys = [dic5 allKeys]; // 獲取的鍵在數(shù)組中是無序的        for (int i = 0; i < dic5.count; i++) {        NSString *key = allKeys[i];        NSString *value = dic5[key];        NSLog(@"%@-->%@",key,value);    }        // 第二種方式:將字典中的鍵值對傳遞給Block中的key和obj    [dic5 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {        NSLog(@"%@-->%@",key,obj);
     // 遍歷一次立即停止 *stop = YES; }];

 

  • NSMutableDictionary的基本操作
    // 創(chuàng)建可變字典    NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];    // NSMutableDictionary *mutableDic2 = @{@"name",@"Rose",@"address",@"北京"}; 錯誤的寫法因?yàn)橛疫叿祷氐氖遣豢勺兊淖值?/span>
    // 為可變字典添加元素    [mutableDic setObject:@"Rose" forKey:@"name"];    [mutableDic setObject:@"北京" forKey:@"address"];
    // 移除    [mutableDic removeAllObjects];    [mutableDic removeObjectForKey:@"name"];
    // 打印    NSLog(@"%@",mutableDic); // 輸出:address = "/U5317/U4eac"; name = Rose;     /U5317/U4eac 就是北京存儲的形式

 

(8) 設(shè)計一個通訊錄里面包含了四個人的姓名、電話、地址

    NSArray *friends = @[         @{@"name":@"張三",@"phone":@"13993214321",@"address":@"北京"},         @{@"name":@"李斯",@"phone":@"13498766789",@"address":@"上海"},         @{@"name":@"王武",@"phone":@"15898766789",@"address":@"天津"},         @{@"name":@"趙柳",@"phone":@"18798766789",@"address":@"南京"}];        // 獲取‘李斯’的通訊錄信息    NSDictionary *dic = friends[1];    NSLog(@"%@",dic);

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南澳县| 麟游县| 莲花县| 彝良县| 伽师县| 二手房| 富阳市| 乐安县| 吐鲁番市| 巢湖市| 图木舒克市| 桐梓县| 丽水市| 上林县| 通江县| 玉溪市| 成武县| 重庆市| 化德县| 新竹县| 柳江县| 梅州市| 汨罗市| 页游| 甘洛县| 车险| 阿拉善右旗| 永定县| 雅江县| 黄龙县| 和田市| 浙江省| 嘉禾县| 临桂县| 福安市| 清水县| 永平县| 东台市| 贵定县| 绥德县| 永昌县|