标签:style blog color io os 使用 ar for strong
一、Foundation框架简介
Foundation框架,顾名思义就是基础框架。基础框架上的类都是与用户界面无关的,为所有的程序开发提供一个基础。OC的基础框架常用的类包括:数组,字典,数字,字符串等以及它们的子类。要使用这个框架需要在引入头文件#import <Foundation/Foundation.h>
二、数组
NSArray类以及它的子类NSMutableArray,一个是不可变数组,一个是可变数组。下面通过代码来看一下它的一些基本的用法。
1 #import <Foundation/Foundation.h> 2 3 int main(int argc,const char* argv[]) 4 { 5 NSArray *arrayWithEmpty = [NSArray array]; // 创建一个空数组,这个数组永远为空 6 NSArray *array1 = [NSArray arrayWithObject:@"Himym!"]; // 创建非空数组,含一个元素 7 NSArray *array2 = [NSArray arrayWithObjects:@"Himym",@"Robb",nil]; // 创建非空数组,含多个元素,以nil结尾 8 NSArray *array3 = @[@"HImym",@"Baratheon",@"Miss Gao"]; // 快速创建一个对象 9 NSLog(@"array2 %ld",array2.count,array3.count); // 数组元素个数 10 NSLog(@"%@",[array2 objectAtIndex:1]); 11 NSLog(@"%@",array[2]); // 访问数组元素 12 NSMutableArray *array4 = [NSMutableArray arrayWithObjects:@"Himym",@"Robb",nil]; 13 [array4 addObject:[[Person alloc] init]]; 14 [array4 addObject:@"NaNa"]; // 往数组里面添加元素 15 [array4 removeObject:@"Miss Zhao"]; 16 [array4 removeObjectAtIndex:1]; 17 [array4 addObjectsFromArray:array2]; 18 for(id obj in array4) // 遍历数组 19 { 20 NSUInteger i = [array4 indexOfObject:obj]; 21 NSLog(@"%ld %@",i,obj); 28 if(i == 2) 29 *stop = YES; 30 }]; 31 return 0; 32 }
注意问题:
> @[] 只创建不可变数组NSArray,NSMutableArray *array = @[@"jack", @"rose"];是错误写法。
> 数组不能存放nil值;只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等。
三、字典
字典(NSDictionary,NSMutableDictionary)是由键-值对组成的数据集合。通过key来查找value,key可以是任意类型对象,但是其值必须是唯一的。
下面通过代码来看一下基本用法
1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 // 创建字典 7 NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@"Himym.Baratheon" forKey:@"name"]; 8 NSArray *name = @[@"Himym.Baratheon",@20]; 9 NSArray *key = @[@"name",@"age"]; 10 NSDictionary *dic2 = [NSDictionary dictionaryWithObjects:name forKeys:key]; 11 NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:@"Ned.Start",@"name",@20,@"age", nil]; 12 13 // 快速创建 14 NSDictionary *dic0 = @{@"name":@"Joffray.Lannister",@"age":@18}; // 注意是大括号 15 NSLog(@"dic1 = %@\ndic2 = %@\ndic3 = %@\ndic0 = %@",dic1,dic2,dic3,dic0); 16 17 // 取键值 18 id obj1 = [dic0 objectForKey:@"name"]; 19 id obj2 = dic1[@"name"]; 20 NSLog(@"%@ %ld",obj1,obj2,dic0.count); 21 22 // 创建可变字典 23 NSMutableDictionary *mdic1 = [NSMutableDictionary dictionary]; 24 25 // 添加元素 26 [mdic1 setObject:@"Robb.Stark" forKey:@"name"]; 27 [mdic1 setObject:@17 forKey:@"age"]; 28 [mdic1 setObject:@"He is dead" forKey:@"life"]; 29 [mdic1 setObject:@"Sansa" forKey:@"name"]; // 将原有name覆盖 30 NSLog(@"%@",mdic1); 31 32 // 取键值 33 id obj3 = mdic1[@"name"]; 34 NSLog(@"%@",obj3); 35 36 // 删除键值对 37 [mdic1 removeObjectForKey:@"age"]; 38 39 // 遍历字典 40 //NSArray *array1 = [mdic1 allValues]; 41 //NSLog(@"%@",array1); 42 for(id obj in [mdic1 allValues]) 43 { 44 NSLog(@"value %@",obj); 50 } 51 52 [mdic1 enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop) 53 { 54 NSLog(@"key: %@ %@ key --- %@",obj,key); 61 } 62 63 // 字典元素的访问 64 NSArray *person = @[ 65 @{@"name":@"Himym.Baratheon",@"age":@25,@"QQ":@"395696600",@"girlfrends":@[@"NaNa",@"ZhaoChao"]}, 66 @{@"name":@"Joffray.Lannister",@"age":@18}, 67 @{@"name":@"Ned.Stark",@"age":@31}, 68 @{@"name":@"Serse.Lannister",@"age":@24} 69 ]; 70 NSDictionary *ned = person[2]; 71 NSString *nana = person[0][@"girlfrends"][1]; 72 NSArray *girl = person[0][@"girlfrends"]; 73 NSLog(@"%@\n%@\n%@",ned,nana,girl); 74 75 return 0; 76 }
注意的问题:
> 字典的快速创建是用大括号@{},这点有别于数组的快速创建@[]。并且快速创建只适用于NSDictionary。
> 字典里面的键值对是无序排列的,而数组里的元素是有序的。
标签:style blog color io os 使用 ar for strong
原文地址:http://www.cnblogs.com/pangjiayang/p/4015991.html