在iOS 開發(fā)過程中棵红, NSArray噪舀,NSMutableArray垢油、NSDictionary、 NSMutableDictionary 經(jīng)常被用到琅催。這里先來介紹NSArray 與 NSMutableArray居凶。
NSArray 和 NSMutableArray 二者有時可任意選用,有時又必區(qū)分開來藤抡。
1.首先侠碧,
- 1,NSArray只能存儲Objective-C 對象缠黍,而不能存儲C語言中的基本數(shù)據(jù)類型弄兜,比如:int,float瓷式,指針等替饿。
- 2,在使用NSArray時贸典,需特別注意视卢,必須以nil 結(jié)尾,以此來代表結(jié)束。
舉例如下:
NSArray 通過類方法 arrayWithObjects 創(chuàng)建一個新的NSArray廊驼。
NSArray * array;
array = [ NSArray arraryWithObjects: @"one", @"two", @"three",nil ] ;
為了查看array 的內(nèi)容据过, 可通過NSLog方法,如下:
for(int i=0; i<[array count]; i++ )
{
NSLog (@"index %d has %@", i, [array objectAtIndex:i]);
}
從中可看出妒挎,NSArray 創(chuàng)建的是靜態(tài)數(shù)組绳锅,一旦創(chuàng)建之后,就再也不能添加和刪除數(shù)組中的對象了酝掩。
2.NSMutableArray 是 NSArray 補充類鳞芙。NSMutalbeArray 創(chuàng)建的是動態(tài)數(shù)組,可隨意添加或刪除數(shù)組中的元素。
也行你會看到 arrayWithCapacity 方法积蜻,這個數(shù)組容量僅僅是一個參考闯割,不會真的限制數(shù)組的大小。 是為代碼優(yōu)化而設(shè)計的竿拆。
NSMutableArray 使用addObject: 在末尾添加對象, 用 removeObjectAtIndex: 來刪除指定索引處的對象宾尚。對象刪除后丙笋,被刪除對象后面的數(shù)組元素被遷移,填補空缺煌贴。
這里給出一個實例:
#import <Foundation/Foundation.h>
int main( )
{
NSArray *array = [[NSArray alloc] initWithObjects: @”red”, @"white”,@"blue”, nil];
printf(“Array has been created.”);
return 0;
}
這里需特別注意的是:NSArray 的初始化必須以 nil 結(jié)束御板。
另外還需注意,在字符串前加 @ 牛郑,這是 數(shù)組在 Objective-C 與 C 的區(qū)別怠肋。
如何訪問獲取 NSArray 中的對象呢? 通過 NSArray的objectAtIndex: 方法淹朋。 改寫如下:
#import <Foundation/Foundation.h>
int main( )
{
NSArray *array = [[NSArray alloc] initWithObjects: @”red”, @”white”,@”blue”, nil];
printf(“array[0] = %s”, [[array objectAtIndex: 0] cString]);
return 0;
}
輸出結(jié)果:
array[0] = red.
同理笙各,通過 NSArray的 insertObjectAtIndex: 可以很方便地將已有的對象插入數(shù)組中的指定位置。
NSDictionary和NSMutableDictionary
//NSDictionary 初始化
NSDictionary *d1 = [NSDictionary dictionaryWithObjectsAndKeys:@"Shanghai", @"Location", @"Programmer",
@"Occupation", nil];
NSLog(@"d1: %@", d1);
//NSDictionary 個數(shù)
NSLog(@"d1 count: %ld", [d1 count]);
//NSDictionary 枚舉keys/values
//NSEnumerator *keys1 = [d1 keyEnumerator];
NSEnumerator *objs1 = [d1 objectEnumerator];
for (NSObject *obj1 in objs1) {
NSLog(@"obj: %@", obj1);
}
//NSDictionary 根據(jù)key獲取object
NSLog(@"obj: %@", [d1 objectForKey:@"Location"]);
//NSMutableDictionary 初始化 dictionaryWithCapacity, dictionaryWithObjectsAndKeys:<#(id), ...#>,
nil
NSMutableDictionary *d2 = [NSMutableDictionary dictionaryWithCapacity:2];
[d2 setObject:@"Shanghai" forKey:@"Location"];
[d2 setObject:@"Programmer" forKey:@"Occupation"];
NSLog(@"d2: %@", d2);
[d2 setObject:@"Male" forKey:@"Gender"];
NSLog(@"d2: %@", d2);
1础芍、初始化字典
NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",
nil];
NSString *string = [dictionary objectForKey:@"One"];
NSLog(@"string:%@",string);
NSLog(@"dictionary:%@",dictionary);
[dictionary release];
2杈抢、添加字典
[dictionary setObject:@"One" forKey:@"1"];
[dictionary setObject:@"Two" forKey:@"2"];
[dictionary setObject:@"Three" forKey:@"3"];
[dictionary setObject:@"Four" forKey:@"4"];
3、刪除字典
[dictionary removeObjectForKey:@"3"];