学习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的对象容器 -- 集合
当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...
随机推荐
- js禁止Backspace键使浏览器后退
在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想.于是集众人之智,采众家之长,归纳如下: 这里主要参考博客http://q821424508.iteye.com/ ...
- FireDAC 连接access MDB数据库的方法
Use Cases Open the Microsoft Access database. DriverID=MSAcc Database=c:\mydata.mdb Open the Microso ...
- 利用JavaScript来实现用动态检验密码强度
平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度.如下图: 我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好.所以 ...
- Java 枚举类
如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...
- R语言读写中文编码方式
最近遇到一个很头疼的事,就是 R语言读写中文编码方式.在网上找到了一篇博文,谢谢博主的精彩分享,让我很快解决了问题,在此也分享一下 R语言读写数据的方法很多,这里主要是我在使用read.csv/rea ...
- selenium定位元素(本内容从https://my.oschina.net/flashsword/blog/147334处转载)
注明:本内容从https://my.oschina.net/flashsword/blog/147334处转载. 在使用selenium webdriver进行元素定位时,通常使用findElemen ...
- LINUX安全加固规范
1 概述 近几年来Internet变得更加不安全了.网络的通信量日益加大,越来越多的重要交易正在通过网络完成,与此同时数据被损坏.截取和修改的风险也在增加. 只要有值得偷窃的东西就会有想办法窃取它的人 ...
- Kanzi Q&A
Q:为什么我的kanzi studio安装完后无法编译apk? A:请安装jdk,并设置环境变量,并更新thirdpartsdk. Q:为什么使用路径无法读取到列表listbox内的列表项? A:列表 ...
- Java Web应用包括些啥?
Tomcat服务器最重要的作用就是充当Java Web应用的容器.Java Servlet规范中对Java Web应用的定义如下: Java Web应用由一组Servlet.HTML页面.类以及其他可 ...
- DataTables 自定义
自定义取的参数方法 getQueryCondition = function(data) { var param = {}; ]) { param.order =data.columns[data.o ...