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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC本学习笔记Foundatio框架集

發(fā)布時(shí)間:2025/4/14 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC本学习笔记Foundatio框架集 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
??

一、OC數(shù)組
????? ? OC數(shù)組是一個(gè)類,它也分不可變數(shù)組NSArray和可變數(shù)組NSMutableArray。


? ? 1?不可變數(shù)組的創(chuàng)建
// 創(chuàng)建一個(gè)不可變數(shù)組。元素為一個(gè)OC字符串對(duì)象 @"小橋"NSArray *array1 = [NSArray arrayWithObject:@"小橋"];// 創(chuàng)建一個(gè)不可變數(shù)組,元素為多個(gè)OC字符串對(duì)象NSArray *array2 = [NSArray arrayWithObjects:@"葬花 橋", @"120歲", @"來自武漢" , nil];// 高速創(chuàng)建一個(gè)不可變數(shù)組NSArray *array3 = @[@"葬花 橋", @"120歲", @"來自武漢"]; // 這是Xcode的一個(gè)特性。它會(huì)把這句自己主動(dòng)轉(zhuǎn)換成上面那句 ????????? ?高速創(chuàng)建數(shù)組@[]和 @"" 一樣都是Xcode會(huì)自己主動(dòng)替換成完整的語句。后面還有非常多其他的,像@{}等等。
? ???
2?OC數(shù)組的元素個(gè)數(shù)統(tǒng)計(jì)
????? ? 在C中的數(shù)組中。數(shù)組的下標(biāo)就是數(shù)組元素的個(gè)數(shù),OC數(shù)組中提供了count對(duì)象方法,如:
? ? ? ?

// 輸出array3的元素個(gè)數(shù)NSLog(@"數(shù)組元素個(gè)數(shù)=%ld", array3.count);

?????????array3.count ?調(diào)用數(shù)組的count方法就會(huì)返回元素的個(gè)數(shù)。

?

?
? ? ?3?OC數(shù)組的訪問
????? ? C數(shù)組的訪問非常easy。a[i]?
? ?這就是訪問數(shù)組a的第 i ?個(gè)元素,OC數(shù)組中訪問指定元素例如以下:
// 訪問數(shù)組元素NSLog(@"第%d個(gè)元素為%@", 0, [array3 objectAtIndex:0]); ? ?蘋果官方為和簡(jiǎn)化。又提供了Xcode的新特性,OC數(shù)組的訪問變得簡(jiǎn)單。能夠和C數(shù)組有一樣的寫法:
NSLog(@"第%d個(gè)元素為%@", 1 , array3[1]);<span style="font-family: Menlo; line-height: 1.6;">?</span>? ?簡(jiǎn)化的寫法依舊是編譯器自己主動(dòng)替換成上一個(gè)寫法,所以盡管寫法一樣但本質(zhì)不同。


????4?OC數(shù)組的遍歷
????? ? 1.C中的數(shù)組遍歷也能夠用在OC數(shù)組中:
// 1.傳統(tǒng)遍歷方法for (int i=0; i<array3.count; i++){NSLog(@"第%d個(gè)元素---%@", i, array3[i]);} ????????? ? 這是面向過程的數(shù)組遍歷,以下兩種是面向?qū)ο蟮臄?shù)組遍歷:
????? ? 2.
// 2.OC遍歷unsigned long i = 0; // 記住當(dāng)前下標(biāo)for (NSString *obj in array3) // array3中的對(duì)象所有是OC字符串,假設(shè)不是同一種類型就用 id{i = [array3 indexOfObject:obj]; // 獲取當(dāng)前元素的下標(biāo)NSLog(@"第%ld個(gè)元素---%@", i, obj);} ????????? ? 這樣的遍歷不能獲取當(dāng)前的下標(biāo),必須定義標(biāo)志變量 i?
????? ? 3.bloc遍歷
// 3.block遍歷,調(diào)用enumerateObjectsUsingBlock: 方法。傳遞一個(gè)block參數(shù)[array3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) // 這些參數(shù)由方法enumerateObjectsUsingBlock傳遞過來{NSLog(@"第%ld個(gè)元素----%@", idx, obj); // 對(duì)數(shù)組元素的操作在block中進(jìn)行}]; ????????? ? 按小橋的理解block遍歷并非在block中訪問的OC數(shù)組。而在?enumerateObjectsUsingBlock:這種方法中。當(dāng)中????? ? ? ?????????的for循環(huán)中獲取數(shù)組當(dāng)前元素賦值給obj,而我們能夠在block參數(shù)中寫我們要運(yùn)行的一些代碼來操作數(shù)組元素,enumerateObjectsUsingBlock:方法每循環(huán)一次就調(diào)用一次block運(yùn)行我們的代碼,當(dāng)中 *stop是一個(gè)地址傳遞的標(biāo)志參數(shù),能夠控制循環(huán)是否繼續(xù)下去,假設(shè)在block中賦值為 YES 那么遍歷將停止。

?????5?可變數(shù)組的創(chuàng)建和使用
????? ? 因?為可變數(shù)組類是不可變數(shù)組類的子類,所以繼承了父類的方法。使用同樣,小橋這里主要講下它自己獨(dú)有的方法。


????? ? 加入元素?:

// 子類有父類的方法NSMutableArray *array4 = [NSMutableArray arrayWithObjects:@"葬花", @"橋" , nil];// 加入元素[array4 addObject:@"今天天氣又不好"];

????? ? 加入元素后數(shù)組中就多了一個(gè)元素
? ?刪除
元素 :

// 刪除元素所有元素 [array4 removeAllObjects];// 刪除指定元素[array4 removeObject:@"橋"];

????? ?這僅僅是兩個(gè),還有非常多。小橋就不一一列舉了。

以上就是OC數(shù)組的內(nèi)容。小橋把用到的所有代碼拷貝上來:

// // main.m // OC數(shù)組 // // Created by 葬花 橋 on 14-5-18. // Copyright (c) 2014年 itcast. All rights reserved. //#import <Foundation/Foundation.h>int main() {/*---------------------------------------------------------------數(shù)組的創(chuàng)建---------------------------------------------------------------*/// 創(chuàng)建一個(gè)不可變數(shù)組,元素為一個(gè)OC字符串對(duì)象 @"小橋"NSArray *array1 = [NSArray arrayWithObject:@"小橋"];// 創(chuàng)建一個(gè)不可變數(shù)組,元素為多個(gè)OC字符串對(duì)象NSArray *array2 = [NSArray arrayWithObjects:@"葬花 橋", @"120歲", @"來自武漢" , nil];// 高速創(chuàng)建一個(gè)不可變數(shù)組NSArray *array3 = @[@"葬花 橋", @"120歲", @"來自武漢"]; // 這是Xcode的一個(gè)特性。它會(huì)把這句自己主動(dòng)轉(zhuǎn)換成上面那句// 輸出array3的元素個(gè)數(shù)// NSLog(@"數(shù)組元素個(gè)數(shù)=%ld", array3.count);// 訪問數(shù)組元素// NSLog(@"第%d個(gè)元素為%@", 0, [array3 objectAtIndex:0]);// NSLog(@"第%d個(gè)元素為%@", 1 , array3[1]);/*---------------------------------------------------------------數(shù)組的遍歷---------------------------------------------------------------*/// 1.傳統(tǒng)遍歷方法for (int i=0; i<array3.count; i++){// NSLog(@"第%d個(gè)元素---%@", i, array3[i]);}// 2.OC遍歷unsigned long i = 0; // 記住當(dāng)前下標(biāo)for (NSString *obj in array3) // array3中的對(duì)象所有是OC字符串。假設(shè)不是同一種類型就用 id{i = [array3 indexOfObject:obj]; // 獲取當(dāng)前元素的下標(biāo)//NSLog(@"第%ld個(gè)元素---%@", i, obj);}// 3.block遍歷,調(diào)用enumerateObjectsUsingBlock: 方法,傳遞一個(gè)block參數(shù)[array3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) // 這些參數(shù)由方法enumerateObjectsUsingBlock傳遞過來{// NSLog(@"第%ld個(gè)元素----%@", idx, obj); // 對(duì)數(shù)組元素的操作在block中進(jìn)行if (idx == 1){*stop = YES; // 當(dāng)當(dāng)前索引為 1 時(shí)停止遍歷}}];/*---------------------------------------------------------------可變數(shù)組的創(chuàng)建和使用---------------------------------------------------------------*/// 子類有父類的方法NSMutableArray *array4 = [NSMutableArray arrayWithObjects:@"葬花", @"橋" , nil];// 加入元素[array4 addObject:@"今天天氣又不好"];// 刪除元素所有元素[array4 removeAllObjects];// 刪除指定元素[array4 removeObject:@"橋"];for (id obj in array4){NSLog(@"array4---%@", obj);}return 0; }

二、NSSet
????? ? NSSet也是一個(gè)集合,它和NSArray相似,能夠存放多個(gè)OC對(duì)象,可是不能存放基本數(shù)據(jù),本身也不能改變。可是子類能夠改變。不同的是,NSSet沒有順序,而NSArray有順序。
? ? ??? ?三、NSDictionary
????????? ? 字典類也是一個(gè)集合類,它里面存放的都是鍵--值對(duì),通過鍵(key)就能找到值(value)。
?????1?字典的創(chuàng)建和使用
// 創(chuàng)建單個(gè)鍵值對(duì)字典NSDictionary *dic = [NSDictionary dictionaryWithObject:@"葬花" forKey:@"姓"];// 創(chuàng)建多個(gè)鍵值對(duì)的字典NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"葬花", @"姓",@"橋", @"名",@"44125", @"QQ", nil];// 高速創(chuàng)建字典NSDictionary *dic3 = @{@"姓" : @"葬花"};?????dic中存放著一個(gè)鍵值對(duì),@"姓" 和 @"葬花" 。通過key索引就能找到相應(yīng)的值:
id obj = [dic objectForKey:@"姓"]; // 高速查找值id obj3 = dic3[@"姓"];? ? ? ?2?可變字典
????? ? 和數(shù)組一樣?,它的一個(gè)子類,也能夠在已有的字典上加入鍵值對(duì),刪除鍵值對(duì)。
????? ??
創(chuàng)建可變字典

// 創(chuàng)建一個(gè)空的字典NSMutableDictionary *dic4 = [NSMutableDictionary dictionary];// 加入鍵值對(duì)[dic4 setObject:@"橋" forKey:@"名字"];[dic4 setObject:@"120歲" forKey:@"年齡"];[dic4 setObject:@"武漢" forKey:@"地址"];[dic4 setObject:@"44125" forKey:@"QQ"];

? ? ? ??刪除鍵值對(duì)??? // 刪除鍵值對(duì)[dic4 removeObjectForKey:@"年齡"]; ?????字典遍歷????
// 字典的遍歷NSArray *keys = [dic4 allKeys]; // 找出全部keyfor (int i=0; i<dic4.count; i++){NSString *key4 = keys[i]; NSString *obj4 = dic4[key4]; // 找出key相應(yīng)的valueNSLog(@"%@ = %@", key4, obj4);} // block遍歷[dic4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){NSLog(@"%@ = %@", key, obj);}]; ????數(shù)組與字典的嵌套?
// 數(shù)組中的元素為字典,每一個(gè)字典為一個(gè)人的信息NSArray *array = @[@{@"姓名" : @"葬花 橋", @"年齡" : @"120歲", @"QQ" : @"44125"},@{@"姓名" : @"SouBanaQiao", @"年齡" : @"20歲", @"QQ" : @"123456"},@{@"姓名" : @"一休", @"年齡" : @"13歲", @"QQ" : @"4568651"}];// 訪問數(shù)組中的字典元素中的鍵值對(duì)NSString *str = array[0][@"QQ"]; // 取出數(shù)組中的第0個(gè)字典元素,再取出字典key相應(yīng)的valueNSLog(@"%@", str); ????? ? 不難理解,array是一個(gè)oc數(shù)組,其他的每一個(gè)元素為字典對(duì)象。注意這里的訪問與C中的二維數(shù)組的訪問的差別。這里僅僅是用了編譯器特性,它本質(zhì)上是方法調(diào)用。
????? ?還能夠再嵌套
// 數(shù)組中的元素為字典,每一個(gè)字典為一個(gè)人的信息,元素0中的字典中的QQ有兩個(gè)NSArray *array2 = @[@{@"姓名" : @"葬花 橋", @"年齡" : @"120歲", @"QQ" : @[@"44125", @"1234"]},@{@"姓名" : @"SouBanaQiao", @"年齡" : @"20歲", @"QQ" : @"123456"},@{@"姓名" : @"一休", @"年齡" : @"13歲", @"QQ" : @"4568651"}];// 訪問數(shù)組中的字典元素中的鍵值對(duì)NSString *str2 = array2[0][@"QQ"][1];NSLog(@"%@", str2); ????? ? 這里是數(shù)組中套字典,再在字典中套數(shù)組,第0個(gè)元素字典中的QQ鍵相應(yīng)的值是一個(gè)數(shù)組。所以這里會(huì)輸出
1234

小橋最后附上寫筆記用到的全部字典代碼

// // main.m // NSDictionary // // Created by 葬花 橋 on 14-5-18. // Copyright (c) 2014年 itcast. All rights reserved. //#import <Foundation/Foundation.h>int main() {/*---------------------------------------------------------------字典的創(chuàng)建和使用---------------------------------------------------------------*/// 創(chuàng)建單個(gè)鍵值對(duì)字典NSDictionary *dic = [NSDictionary dictionaryWithObject:@"葬花" forKey:@"姓"];// 通過索引找到值id obj = [dic objectForKey:@"姓"];// 創(chuàng)建多個(gè)鍵值對(duì)的字典NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@"葬花", @"姓",@"橋", @"名",@"44125", @"QQ", nil];// 高速創(chuàng)建字典NSDictionary *dic3 = @{@"姓" : @"葬花"};// 高速查找值id obj3 = dic3[@"姓"];// NSLog(@"%@", obj3);/*---------------------------------------------------------------可變字典的創(chuàng)建和使用---------------------------------------------------------------*/// 創(chuàng)建一個(gè)空的字典NSMutableDictionary *dic4 = [NSMutableDictionary dictionary];// 加入鍵值對(duì)[dic4 setObject:@"橋" forKey:@"名字"];[dic4 setObject:@"120歲" forKey:@"年齡"];[dic4 setObject:@"武漢" forKey:@"地址"];[dic4 setObject:@"44125" forKey:@"QQ"];// 刪除鍵值對(duì)[dic4 removeObjectForKey:@"年齡"];// 字典的遍歷NSArray *keys = [dic4 allKeys]; // 找出全部keyfor (int i=0; i<dic4.count; i++){NSString *key4 = keys[i];NSString *obj4 = dic4[key4]; // 找出key相應(yīng)的value// NSLog(@"%@ = %@", key4, obj4);}// block遍歷[dic4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){// NSLog(@"%@ = %@", key, obj);}];/*---------------------------------------------------------------字典與數(shù)組的嵌套---------------------------------------------------------------*/// 數(shù)組中的元素為字典,每一個(gè)字典為一個(gè)人的信息NSArray *array = @[@{@"姓名" : @"葬花 橋", @"年齡" : @"120歲", @"QQ" : @"44125"},@{@"姓名" : @"SouBanaQiao", @"年齡" : @"20歲", @"QQ" : @"123456"},@{@"姓名" : @"一休", @"年齡" : @"13歲", @"QQ" : @"4568651"}];// 訪問數(shù)組中的字典元素中的鍵值對(duì)NSString *str = array[0][@"QQ"]; // 取出數(shù)組中的第0個(gè)字典元素。再取出字典key相應(yīng)的value// NSLog(@"%@", str);// 數(shù)組中的元素為字典。每一個(gè)字典為一個(gè)人的信息,元素0中的字典中的QQ有兩個(gè)NSArray *array2 = @[@{@"姓名" : @"葬花 橋", @"年齡" : @"120歲", @"QQ" : @[@"44125", @"1234"]},@{@"姓名" : @"SouBanaQiao", @"年齡" : @"20歲", @"QQ" : @"123456"},@{@"姓名" : @"一休", @"年齡" : @"13歲", @"QQ" : @"4568651"}];// 訪問數(shù)組中的字典元素中的鍵值對(duì)NSString *str2 = array2[0][@"QQ"][1];NSLog(@"%@", str2);return 0; }


版權(quán)聲明:本文博客原創(chuàng)文章。博客,未經(jīng)同意,不得轉(zhuǎn)載。

轉(zhuǎn)載于:https://www.cnblogs.com/bhlsheji/p/4641172.html

總結(jié)

以上是生活随笔為你收集整理的OC本学习笔记Foundatio框架集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。