黑马程序员_ Objective-c 之Foundation笔记(二)
NSArray
NSArray的创建
NSArray *array = [NSArray arrayWithObject:@“jack”] 创建单个元素
NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil] 创建多个元素
快速创建一个NSArray对象
NSArray *array4 = @[@"jack", @"rose", @"4324324"]
[array.count ] 计算数组元素的个数
array3[0]
[array3 objectAtIndex:1] 访问数组的元素
注意:OC数组不能存放nil值,nil是数组的结束标记
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
NSArray *array = [NSArray array] 这个数组永远是空数组
遍历数组方法一、

Person *p = [[Person alloc] init];
NSArray *array = @[p, @"rose", @"jack"];
for (int i = 0; i<array.count; i++)
{
NSLog(@"%@", array[i]);
}

方法二、

id obj代表着数组中的每一个元素
int i = 0;
for (id obj in array)
{
// 找出obj元素在数组中的位置
NSUInteger i = [array indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
//i++;
if (i==1)
{
break;
}
}

方法三、

[array enumerateObjectsUsingBlock:
// 每遍历到一个元素,就会调用一次block
// 并且当前元素和索引位置当做参数传给block
^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx == 0)
{
// 停止遍历
*stop = YES;
}
}];

NSMutableArray
创建数组
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]
添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jack"];
删除元素
[array removeAllObjects]
删除指定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
NSSet
创建
NSSet *s = [NSSet set]
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil]
随机拿出一个元素
NSString *str = [s2 anyObject];
NSLog(@"%@", str);
NSMutableSet
NSMutableSet *s = [NSMutableSet set];
添加元素
[s addObject:@"hack"];
删除元素
[s removeObject:<#(id)#>];
NSSet和NSArray的对比
1 共同点
1) 都是集合,都能存放多个OC对象
2)只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
3)本身都不可变,都有一个可变的子类
2 不同点
NSArray有顺序,NSSet没有顺序
NSDictionary
字典都是由索引(key)和文字内容组成的(value)
创建不可变字典
方式一、
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
方式二、
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"北京"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
方式三、
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"北京", @"address",
@"32423434", @"qq", nil];
快速创建一个字典
NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
取出字典某个对象
id obj = [dict objectForKey:@"name"]
快速取出字典某个对象
id obj = dict[@"name"]
可变字典 NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary]
添加键值对
[dict setObject:@"jack" forKey:@"name"];
移除键值对
[dict removeObjectForKey:@“name”];
遍历字典
方法一、

NSArray *keys = [dict allKeys];
for (int i = 0; i<dict.count; i++)
{
NSString *key = keys[i];
NSString *object = dict[key];
NSLog(@"%@ = %@", key, object);
}

方法二、

[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);
// *stop = YES;
}];

黑马程序员_ Objective-c 之Foundation笔记(二)的更多相关文章
- 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17
黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...
- 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean
8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...
- 黑马程序员_高新技术之javaBean,注解,类加载器
----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...
- 黑马程序员_ JAVA中的多线程
------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...
- JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典
总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...
- 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate
Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...
- 黑马程序员_ Objective-c 之Foundation笔记(一)
结构体 NSRange: 用来表示范围 创建 NSRange r1 = {2, 4} NSRange r2 = {.location = 2, .length = 4} NSRange r3 = N ...
- 黑马程序员_ Objective-c 面向对象笔记详解
1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...
- 黑马程序员_ Objective-c 概述及面向对象与三大特性
-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...
随机推荐
- 【转】DBMS_STATS.GATHER_TABLE_STATS详解
转自http://blog.itpub.net/26892340/viewspace-721935/ [作用] DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默 ...
- HDU 1285 确定比赛排名 (数组实现 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) ...
- 小结MapReduce 程序的流程及设计思路
简单回顾一下,目前系统是WCF三层C/S插件系统.服务器端是WCF程序寄宿在IIS中,其中我的配置设计是长连接,客户端支持多线程,一个volatile的实例对象.客户端用Winform,其中客户端框架 ...
- AJAX 状态值(readyState)与状态码(status)详解
总结:status体现的是服务器对请求的反馈,而readystate表明客户端与客户的交互状态过程. 1- AJAX状态值与状态码区别AJAX状态值是指,运行AJAX所经历过的几种状态,无论访问是否成 ...
- BPF and eBPF linux
http://www.brendangregg.com/blog/2016-10-21/linux-efficient-profiler.html http://www.brendangregg.co ...
- ThinkPHP中的动态缓存(S方法)和快速缓存(F方法)
系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache) 对于File方式缓存下的缓存 ...
- Hive 中parse_url的使用
1.Hive的parse_url函数 parse_url(url, partToExtract[, key]) - extracts a part from a URL 解析URL字符串,partTo ...
- 转:linux lsof命令详解
简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...
- 使用jQuery+PHP+Mysql实现抽奖程序
抽奖程序在实际生活中广泛运用,由于应用场景不同抽奖的方式也是多种多样的.本文将采用实例讲解如何利用jQuery+PHP+Mysql实现类似电视中常见的一个简单的抽奖程序. 查看演示 本例中的抽奖程序要 ...
- Google Tensorflow 源码编译(三):tensorflow<v0.5.0>
这几天终于把tensorflow安装上了,中间遇到过不少的问题,这里记录下来.供大家想源码安装的参考. 安装环境:POWER8处理器,Docker容器Ubuntu14.04镜像. Build Tens ...