码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员-Foundation框架之数组和字典

时间:2014-10-10 18:11:24      阅读:219      评论:0      收藏:0      [点我收藏+]

标签: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。

> 字典里面的键值对是无序排列的,而数组里的元素是有序的。

 

黑马程序员-Foundation框架之数组和字典

标签:style   blog   color   io   os   使用   ar   for   strong   

原文地址:http://www.cnblogs.com/pangjiayang/p/4015991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!