学习iOS【3】数组、词典和集合
一、数组
1.不可变数组NSArray
- arrayWithObjects:使用一组对象作为元素创建不可变数组,注意数组的最后一个值需要指定为nil,用来表示参数的结束,但是nil并不会存储在数组中。
- objectAtIndex:获取指定索引位置的数组元素。
- @[elm1,elm2….elmn]:另外一种创建数组的简便方式,不需要以nil作为结尾元素;
- array[index]:另外一种获取指定索引位置元素的方式。
- count:数组中元素个数。
int main(int argc, const char * argv[])
{
@autoreleasepool {
/*不可变数组*/
//创建不可变数组 方式一
NSArray *arr=[NSArray arrayWithObjects:@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",@"周日",nil];
for(int i=;i<[arr count];i++){
NSLog(@"%@",[arr objectAtIndex:i]);
}
//创建不可变数组 方式二
NSArray *arr1=@[@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",@"周日"];
for(int i=;i<[arr1 count];i++){
NSLog(@"%@",arr1[i]);
}
}
}
2.可变数组NSMutableArray
- NSMutableArray array方法创建空的可变数组,数组元素个数未定,可以随着需要增长;
- addObject:向可变数组结尾添加元素;
- insertObject:obj atIndex:i :将对象obj插入数组的第i个元素。
- removeObjectAtIndex:i 删除数组中第i个元素。
- replaceObjectAtIndex:i withObject:obj 将数组中序号为i的对象用obj替换。
- 使用NSLog格式化%@可以显示整个数组,它实际上会调用每个元素的description方法。
int main(int argc, const char * argv[])
{
@autoreleasepool {
/*可变数组*/
NSMutableArray *marr=[NSMutableArray array];
for (int i=; i<; i++) {
marr[i]=@(i+);
}
[marr addObject:@()];
for (int i=; i<[marr count]; i++) {
NSLog(@"%@",marr[i]);
}
NSLog(@"%@",marr);
}
}
二、词典对象(dictionary)
1.不可变词典NSDictionary
- NSDictionary dictionaryWithObjectsAndKeys:创建不可变词典,参数是值-键对组合(注意顺序),以nil结尾。
- allKeys:返回一个数组包含词典中的所有键;
- count:返回词典中的记录数;
- objectForKey:返回key的值对象。
int main(int argc, const char * argv[])
{
@autoreleasepool {
/*不可变词典*/
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"学生",@"",@"教师",@"", nil];
for (NSString *key in dic) {
NSLog(@"key:%@ value:%@",key,[dic objectForKey:key]);
}
}
}
2.可变词典NSMutableDictionary
- NSMutableDictionary dictionary:创建一个可变词典;
- setObject:forKey:把键值对添加到可变词典中;
- removeAllObjects:删除词典中所有的记录;
- removeObjectForKey:删除词典中的指定键key对应的记录;
int main(int argc, const char * argv[])
{
@autoreleasepool {
/*可变词典*/
//创建可变词典对象
NSMutableDictionary *mdic=[NSMutableDictionary dictionary];
//添加键值对
[mdic setObject:@"学生" forKey:@""];
mdic[@""]=@"教师";
//显示键值对
NSLog(@"key:1 value is:%@",[mdic objectForKey:@""]);//key:1 value is:学生
NSLog(@"key:2 value is:%@",mdic[@""]);//key:2 value is:教师
//删除
[mdic removeObjectForKey:@""];
NSLog(@"mdic count:%lu",[mdic count]);//mdic count:1
[mdic removeAllObjects];
NSLog(@"mdic count:%lu",[mdic count]);//mdic count:0
}
}
三、集合对象(set)
1.NSSet 不可变词典
- setWithObjects:以一个nil为结尾的对象数组创建一个集合。
- containObject:检测某个对象是否包含在集合中。
- count:集合成员个数。
2.NSMutableSet 可变词典
- addObject:向集合中添加对象;
- removeObject:从集合中删除对象;
- removeAllObjects:删除集合中所有对象;
- unionSet:求两个集合的并集;
- intersectSet:求两个集合的交集
3.实例
#import <Foundation/Foundation.h> @interface NSSet (Printing)
-(void)print;
@end
#import "NSSet+Printing.h" @implementation NSSet (Printing)
-(void)print{
NSLog(@"------");
for(NSNumber *item in self){
NSLog(@"%li",(long)[item integerValue]);
}
}
@end
#import <Foundation/Foundation.h>
#import "NSSet+Printing.h" int main(int argc, const char * argv[])
{
@autoreleasepool {
//创建不可变集合
NSSet *set=[NSSet setWithObjects:@"",@"",@"", @"",nil];
//创建可变集合
NSMutableSet *mset=[NSMutableSet setWithObjects:@"",@"",@"",@"",@"", nil];
//输出
[set print];
[mset print];
//成员测试
if([set containsObject:@""]==YES){
NSLog(@"set contain 7");
}else{
NSLog(@"set does not contain 7");
}
//添加对象
[mset addObject:@""];
[mset print];
//移除对象
[mset removeObject:@""];
//求并集
[mset unionSet:set];
[mset print];
[mset print];
//求交集
[mset intersectSet:set];
[mset print];
}
}
学习iOS【3】数组、词典和集合的更多相关文章
- 学习iOS
最近想学习一下iOS开发,不过一点基础都没有,得先从熟悉object-C语法开始,在此把学习中的一些知识点作为记录. mac pro常用操作 学习ios[1]Objective-C 基本语法 学习io ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- 【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
原文网址:http://bbs.51cto.com/thread-1099956-1.html 亲爱的学员们: 如今,各路开发者为淘一桶金也纷纷转入iOS开发的行列.你心动了吗?想要行动吗?知道如何做 ...
- 学习iOS开发的前言
一.什么是iOS 要想学习iOS开发,首先要搞清楚什么是iOS.iOS其实是一款操作系统,就像平时我们在电脑上用的XP.Win7,都是操作系统. 那什么是操作系统呢?操作系统其实是一种软件,是直接运行 ...
- 【零基础学习iOS开发】【01-前言】01-开篇
本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...
- PHP学习笔记之数组篇
摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇 一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...
- [ Java学习基础 ] Java的对象容器 -- 集合
当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...
随机推荐
- MATLAB地图工具箱学习总结(二)大圆和恒向线
MATLAB地图工具箱学习总结(二)大圆和恒向线 今天要和大家谈一谈大圆.恒向线航道的画法.还是先从案例开始说起,再分别介绍相关的函数. 1 作业案例:地图投影作 ...
- static变量引起的问题,List数据覆盖
出现的问题:Listt加载数据时,后面加载的数据会覆盖前面的数据,把后面的数据变得和前面一样 原因:因为刚开始把添加的数据写成了静态变量,所以一个改了以后所有都改了 解决方法:把数据设成普通属性,非静 ...
- sql-GOTO跳转
--声明变量 DECLARE @X INT --标记GOTO跳转位置 TEST: PRINT @X --WHILE @X<=3 --GOTO跳转到执行位置 GOTO TEST
- 7.dotnet core 如何发邮件
需要用到的Nuget包 "MailKit": "1.8.1", 方法 /// <summary> /// 发送邮件(支持Html发送,支持添加一个附 ...
- ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)
做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...
- XML特殊符号
在XML中"<" 字符和"&"字符是严格禁止使用的.要使用这几种字符需要使用它们的实体, 下面是五个在XML文档中预定义好的实体:< < ...
- nginx 日志变量含义
log_format logstash "remote_addr | $time_local | $request | $status | $body_bytes_sent | " ...
- 【所见即所得】textarea 精确限制字数、行数,中、英、全半角混检 。源码带注释
主要解决难点: 1 中文 全角2字符深深的恶意 2 多行输入textarea 手动,自动换行问题 3 获得每行内容 原创,转载请注明出处! <!DOCTYPE html PUBLIC " ...
- ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机
ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机 如果你所用的framework支持真机和模拟器多种CPU架构,而你需要的是其中的一种或几种,那么可以可以从framewo ...
- JAVA 1.3 (原生数据类型 Primitive Data Type)续
1. 原生数据类型一共有4类8种 >> 整数类型 int表示一个int代表32位 2^32(-2147483648 - 2147483647) >> 字符类型 byte 表示一 ...