NSArray NSDictionary NSMutableArray NSMutableDictionary
一、NSArray
NSArray 是不可變的,而且只能儲存Object-c物件。另外,陣列的最後一個元素一定是nil,表示結束。
注:這些集合類只能收集cocoa物件(NSObject物件),如果想儲存一些原始的C資料(例如,int,float,double,BOOL等),則
需要將這些原始的C資料封裝成NSNumber型別的,NSNUmber物件是cocoa物件,可以被儲存在集合類中。
陣列常見的用法首先是建立陣列,然後對陣列進行操作。
對陣列進行的常見操作可以分為:增(插入)、刪、改、查、取、遍歷、排序、比較。
對於NSArray來說,因為本身是不可變的,所以對NSArray的操作沒有增和刪。
1.NSArray的宣告與初始化
NSArray * array =[[NSArray alloc]initWithObjects:@"One",@"Two",@"Three",@"Four",nil];
NSArray * array1 =[NSArray arrayWithObjects:@"One",@"Two",nil];//不需要手動釋放
//- (unsigned) Count;陣列所包含物件個數;
NSLog(@"%ld",[arraycount]);
//- (id) objectAtIndex: (unsigned int) index;獲取指定索引處的物件;
NSLog(@"%@"
[array release];
//----從一個數組拷貝資料到另一個數組(可變陣列
NSMutableArray * MutableArray1 = [[NSMutableArray alloc]init];
NSArray * array2 =[NSArray arrayWithObjects:@"a",@"b",@"c",nil];
MutableArray1 = [NSMutableArray arrayWithArray:array2];
NSLog(@"%@",MutableArray1);
//NSArray初始化的時候也可以使用
NSArray * array3 = [[NSArrayalloc] init];
array3 =[NSArray arrayWithArray:array1];
NSLog(@"%@",array3);
2.NSArray的遍歷 通常有三種方式 1.in 2.迭代器 3.for
id obj;
NSMutableArray * newArray =[ [NSMutableArray alloc]init];
NSArray * oldArray =[NSArrayarrayWithObjects:@"a",@"b",@"d",@"c",nil];
for (int i=0; i<[oldArray count]; i++) {
obj=[[oldArray objectAtIndex:i]copy];
[newArray addObject:obj];
}
//快速列舉
for (id obj1in oldArray) {
[newArray addObject:obj1];
}
3.排序
/*
1.字串陣列排序
IOS提供一個sortedArrayUsingSelector ()函式,用於對字串陣列進行排序,方法會在排序後返回一個新的陣列。
[array sortedArrayUsingSelector (@selector(xxxx:))];
xxxx:方法需要你自己根據實際情況設定排序方式。有預設的排序方法 compare :
2.數字陣列排序
將數字加入陣列,首先要轉換成NSNumber。然後再使用sortedArrayUsingSelector:
注意取出數字元素的時候要換一下型別
NSNumber *indicator = (NSNumber *)[ numberArray objectAtIndex:idx];
int value = [ indicator intValue ];
3.對物件陣列排序
可以使用NSSortDescriptor對物件陣列進行排序。
@interface Person :NSObject {
NSString *firstName;
NSString *lastName;
}
@property (nonatomic , retain ) NSString *firstName ;
@property (nonatomic , retain ) NSString *lastName ;
現在,有一個由Person物件組成的陣列,對這個陣列排序,使用sortUsingDescriptors:
NSSortDescriptor *sorter = [ NSSortDescriptor alloc ] initWithKey : xxx ascending:YES];
[array sortUsingDescriptors : [ NSArray arrayWithObject:sorter ]] ;
*/
[newArray sortUsingSelector:@selector(compare:)];
NSLog(@"%@",newArray);
4.切分陣列
//從字串分割到陣列-componentsSeparateByString
NSString * string = [[NSStringalloc] initWithString:@"One,Two,Three,Four"];
NSArray * array4 = [stringcomponentsSeparatedByString:@","];
NSLog(@"%@",array4);
[string release];
//從數組合並元素到字串- componentsJoinedByString:
NSArray * array5 =[NSArrayarrayWithObjects:@"One",@"Two",@"Three",@"Four",nil];
NSString * string2 =[array5componentsJoinedByString:@","];
NSLog(@"%@",string2);
二、NSMutableArray(可變陣列)
2.1 初始化NSMutableArray
//給陣列分配容量
NSMutableArray * array6;
array6 = [NSMutableArrayarrayWithCapacity:20];
//在陣列末尾新增物件
array6 =[NSMutableArrayarrayWithObjects:@"One",@"Two",@"Three",nil];
[array6 addObject:@"Four"];
NSLog(@"%@",array6);
2.2刪除陣列中指定索引處物件
[array6 removeObjectAtIndex:1];
NSLog(@"%@",array6);
2.3遍歷陣列
//- (NSEnumerator *)objectEnumerator;從前向後
NSMutableArray * array7 =[NSMutableArrayarrayWithObjects:@"One",@"Two",@"Three",nil];
NSEnumerator * enumerator;
enumerator = [array7 objectEnumerator];
id temp;
while(temp=[enumeratornextObject]){
NSLog(@"%@",temp);
}
//- (NSEnumerator *)reverseObjectEnumerator;從後向前
NSEnumerator * enumerator1;
enumerator1 =[array7 reverseObjectEnumerator];
while(temp=[enumerator1nextObject]){
NSLog(@"%@",temp);
}
//快速列舉
for(NSString * string3in array7){
NSLog(@"%@",string3);
}
三、NSDictionary(不可變詞典)
[NSDictionary dictionaryWithObjectsAndKeys:..] :使用鍵值對兒直接建立詞典物件,結尾必需使用nil標誌結束。
[NSDictionary initWithObjectsAndKeys:..] :使用鍵值對兒初始化詞典物件,結尾必需使用nil標誌結束。
[dictionary count]: 得到詞典的長度單位。
[dictionary keyEnumerator]: 將詞典的所有KEY儲存在NSEnumerator中,NSEnumerator很像Java語言中的迭代器,使用快速列舉可以遍歷詞典中所有儲存KEY值。
[dictionary objectEnumerator]: 將詞典的所有value儲存在NSEnumerator中,用法和上面差不多可用來遍歷KEY對應儲存的Value值。
[dictionary objectForKey:key]:通過傳入KEY物件可以拿到當前KEY對應儲存的值。
3.1NSDictionary的宣告與初始化
//- (id) initWithObjectsAndKeys;
NSDictionary * dictionary =[[NSDictionaryalloc]initWithObjectsAndKeys:@"geek",@"name",@"110",@"Tel",@"18",@"age",nil];
//得到字典的數量
NSUInteger count =[dictionarycount];
NSLog(@"字典的數量為:%ld",count);
//得到詞典中所有KEY值
NSEnumerator * enumeratorKey = [dictionarykeyEnumerator];
for(NSObject * objectin enumeratorKey){
NSLog(@"遍歷KEY的值%@",object);
}
//得到詞典中所有Value值
NSEnumerator * enumeratorValue = [dictionaryobjectEnumerator];
for(NSObject * objectin enumeratorValue){
NSLog(@"遍歷Value的值%@",object);
}
//通過KEY找到value
NSString * string3 =[dictionaryobjectForKey:@"name"];
if(string3 !=nil){
NSLog(@"%@",string3);
}
NSLog(@"%@",dictionary);
四、NSMutableDictionary(可變詞典)
NSMutableDictionary 是NSDictionary的子類,所以繼承了NSDictionary的方法。
4.1 NSMutableDictionary 的宣告與初始化
NSMutableDictionary * MutableDictionary = [NSMutableDictionarydictionaryWithCapacity:10];// 建立一個可變詞典初始指定它的長度為10.,動態的新增資料如果超過10這個詞典長度會自動增加,所以不用擔心陣列越界。
//向詞典中動態新增資料
[MutableDictionary setObject:@"Lucy"forKey:@"name"];
[MutableDictionary setObject:@"110"forKey:@"Tel"];
//通過KEY找到value
NSString * string4 =[MutableDictionaryobjectForKey:@"name"];
if(string4 !=nil){
NSLog(@"%@",string4);
}
//[dictionary removeObjectForKey..] :刪除掉詞典中指定KEY的資料。
NSLog(@"%@",MutableDictionary);
[MutableDictionary removeObjectForKey:@"name"];
NSLog(@"%@",MutableDictionary);
//[dictionary removeAllObjects..] :刪除掉詞典中的所有資料。
[MutableDictionary removeAllObjects];
NSLog(@"%@",MutableDictionary);
//詞典類的存在就是為了解決在大量資料中查詢方便,因為它是通過key直接找到value所以速度很快,避免一個個的遍歷尋找造成的效率低下,靈活的使用詞典類會幫你的程式提速。
相關推薦
NSArray NSDictionary NSMutableArray NSMutableDictionary
一、NSArray NSArray 是不可變的,而且只能儲存Object-c物件。另外,陣列的最後一個元素一定是nil,表示結束。 注:這些集合類只能收集cocoa物件(NSObject物件),如果想儲存一些原始的C資料(例如,int,float,double,BOOL等)
集合:NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSSet、NSMutableSet使用
/*本文介紹了:NSArray(有序的集合,儲存的元素在一個整塊的記憶體中並按序排列)、 NSMutableArray、 NSDictionary(鍵值對映)、 NSMutableDictionary、 NSSet(無序的集
[iOS] NSArray與NSMutableArray與NSMutableDictionary
NSArray:固定長度陣列 使用固定一串資料給NSArray時,必須在陣列最後一個值放入nil,否則會發生錯誤。 範例: NSArray *array = [ [ NSArray alloc ] initWithObjects:@”aa”,@”bbb”,nil];//宣告一陣列放入aa、bb字串 NSL
iOS開發之NSDictionary與NSMutableDictionary
NSDictionary不可變字典 1、[NSDictionary dictionaryWithObjectsAndKeys:..]: 使用鍵值對兒直接建立字典物件,結尾必需使用nil標誌結束。 2、[NSDictionary initWithObjectsAndKeys:..]:
iOS第六課 NSArray與NSMutableArray
NSArray基本概念 什麼是NSArray NSArray是OC中的陣列類,開發中建議儘量使用NSArray替代C語言中的陣列 NSArray有哪些使用注意 只能存放任意OC物件, 並且是有順序的 不能儲存非OC物件, 比如int\float\double\char\enu
iOS NSArray 、NSMutableArray原理揭露
在iOS開發中,我們在非常非常多的地方用到了陣列。而關於陣列,有很多需要注意和優化的細節,需要我們潛入到下面,去了解。 閱讀《Effective Objective-C 2.0》的原版的時候,我發現了之前沒怎麼注意到的一段話: In the case of NSArra
[Objective-C]strong、copy在NSArray和NSMutableArray的應用區別
兩個問題 1. 使用strong修飾NSArray會有什麼問題? 2. 使用copy修飾NSMutableArray會有什麼問題? 1. 使用strong修飾NSArray的問題 // // StrongCopyTest.h // StudyRuntim
NSArray與NSMutableArray應該使用copy還是strong?
先說標題的正確答案: @property (nonatomic,copy) NSArray *immutableArray; @property (nonatomic,strong) NSMutableArray *mutableArray; 其他集合: NSAr
NSArray和NSMutableArray的常用方法
/* 初始化方法: 1.init返回一個空陣列 2.initWithArray從已有陣列初始化 3.initWithContentsOfFile//從plist檔案載入 4.initWithContentsOfUrl//從網路地址上獲取
黑馬程式設計師——Foundation框架——NSArray和NSMutableArray
接下來複習的內容是Foundation中使用頻率很高的NSArray和NSMutableArray。 這兩個類和Java中集合的概念相似。 一、NSArray NSArray是一個數組性質的類。並且同樣與Java類似,只能用來存放物件(且只能是OC物件)。不允許有空值出現
oc 知識總結二(NSArray、NSMutableArray)
注:1、陣列:是一組有序的物件的集合,通過索引下標獲取到陣列中的各個元素。 2、陣列中不可以存放基本資料型別,只能存放物件。如果需要將劇本資料型別放入陣列中,需要通過NSNumber來放入。 一、不可變陣列(NSArray) 1、建立NSArray (1)方法
OC NSArray 和 NSMutableArray 常用方法的使用和例項
#import <Foundation/Foundation.h> NSInteger intSort(id num1, id num2, void *context); int main(int argc, const char * argv[]) {
NSArray,NSDictionary,NSSet用法及區別
-NSArray1、初始化、取值等基礎操作 NSArray 是不可變陣列,一旦建立完成就不能夠對陣列進行,新增,刪除等操作 NSArray * array1 = [NSArrayarrayWithObjects:str1,str2,str3,str1,nil]; 在建立一個N
NSString/NSArray/NSDictionary/NSSet方法的總結
NSString 建立 NSString *[email protected]”test”; NSString *str1=[[NSString alloc]initWithString:str]; NSString *str2=[[NSSt
NSDictionary以及NSMutableDictionary用法總結
轉自: http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397712.html 如有侵犯,請來信[email protected] NSNull NSNull大概是Cocoa裡最簡單的類了,只有一個方法
Objective-C中NSArray和NSMutableArray是如何使用的?
Objective-C的陣列比C++,Java的陣列強大在於,NSArray儲存的物件可以是不同的物件。但只能儲存物件,int ,char,double等基本資料型別不能直接儲存,需要通過轉換成物件才能加入陣列。 1、NSArray 不可變陣列 [array count]
ios/iphone NSArray和NSMutableArray的常用方法
/* 初始化方法: 1.init返回一個空陣列 2.initWithArray從已有陣列初始化 3.initWithContentsOfFile//從plist檔案載入 4.initWithContentsOfUrl//從網路地址上獲取 5.initWithOb
OC--NSArray和NSMutableArray
NSArray: 只能存放物件。不能存放C語言中基本的資料型別。如int/double/float等等 陣列下標越界不會有警告,執行時會直接報錯 // 不可變陣列NSArray // 在陣列從存入nil需要使用NSNull,不可以直接存入nil,因為在陣列中ni
iOS開發學習專題-基礎知識(三)NSDictionary字典NSMutableDictionary可變字典NSDictionary字典和json轉換詳細使用方式
本文主要講解的是不可變字典NSDictionary可變字典NSMutableDictionary字典NSDictionary和Json轉換詳細使用方式包括型別和值之間的轉換 文章是博主原創,轉載請
oc知識總結三 NSDictionary、NSMutableDictionary
注:字典是由鍵-值對組成的資料集合,他是無序的一組集合,我們通過key查詢對應的value,key通常是字串物件,在字典中,key的值必須是唯一的,而且key不能為空。 字典分為兩種:不可變字典(NSDictionary)和可變字典(NSMutableDctionary)