学习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的对象容器 -- 集合
当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...
随机推荐
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式 2 (转)
本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apa ...
- MySQL 各种超时参数的含义
MySQL 各种超时参数的含义 今日在查看锁超时的设置时,看到show variables like '%timeout%';语句输出结果中的十几种超时参数时突然想整理一下,不知道大家有没有想过,这么 ...
- IIS报错:Exception from HRESULT: 0x8007000B解决方法
报错如下: System.Web.Services.dll 中发生,但未在用户代码中进行处理 其他信息: 服务器无法处理请求. ---> 尝试加载 Oracle 客户端库时引发 BadImage ...
- java在图片上添加文字
业务需求要在图片上添加水印.下面粘出代码供自己和大家分享 package com.pro.drawTextOnImg; import java.awt.Color; import java.awt.F ...
- 将光标放到input内容的最后
在使用setSelectionRange方法的时候一定要加setTimeout,否则无效,代码 var num = $('#input_phone').val().length; setTimeout ...
- C++多线程の8*2重多线程创建方式
- mac安装 Vitual box 虚拟机(window8.1)
首先到Oracle官网下载oracle VM VB,这是一个开源的免费项目,如果你想要了解更多的话甚至可以下载它的source code http://www.oracle.com/technetwo ...
- Spark学习(二) -- Spark整体框架
标签(空格分隔): Spark 还记得上次的wordCount程序嘛?通过这个小程序,我们来一窥Spark的框架是什么样子的. sc.textFile("/usr/local/Cellar/ ...
- C#自定义大小与改变大下的方法
在用VS的窗体设计器时,我们可以发现控件都是可以拖动的,并且还可以调整大小.怎么在自己的程序中可以使用上述功能呢? 下面的方法值得借鉴! using System; using System.Wind ...
- 携程Ctrip DAL的学习1
携程Ctrip DAL的学习 1 本人net开发菜鸟,原理请自行看github的官网源码. 我这里是简单的使用(helloworld的水平). Ctrip DAL是携程框架部开发的数据库访问框架,支持 ...