一、数组

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)

词典也有两种类型:不可变词典NSDictionary和可变词典NSMutableDictionary。

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)

set是一组单值对象集合。

1.NSSet 不可变词典

  • setWithObjects:以一个nil为结尾的对象数组创建一个集合。
  • containObject:检测某个对象是否包含在集合中。
  • count:集合成员个数。
 

2.NSMutableSet 可变词典

  • addObject:向集合中添加对象;
  • removeObject:从集合中删除对象;
  • removeAllObjects:删除集合中所有对象;
  • unionSet:求两个集合的并集;
  • intersectSet:求两个集合的交集
 

3.实例

首先我们自定义分类为NSSet添加自定义方法print。
NSSet+Printing.h
#import <Foundation/Foundation.h>

@interface NSSet (Printing)
-(void)print;
@end
NSSet+Printing.m
#import "NSSet+Printing.h"

@implementation NSSet (Printing)
-(void)print{
NSLog(@"------");
for(NSNumber *item in self){
NSLog(@"%li",(long)[item integerValue]);
}
}
@end
main.m
#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】数组、词典和集合的更多相关文章

  1. 学习iOS

    最近想学习一下iOS开发,不过一点基础都没有,得先从熟悉object-C语法开始,在此把学习中的一些知识点作为记录. mac pro常用操作 学习ios[1]Objective-C 基本语法 学习io ...

  2. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  3. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  4. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

  5. 【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2

    原文网址:http://bbs.51cto.com/thread-1099956-1.html 亲爱的学员们: 如今,各路开发者为淘一桶金也纷纷转入iOS开发的行列.你心动了吗?想要行动吗?知道如何做 ...

  6. 学习iOS开发的前言

    一.什么是iOS 要想学习iOS开发,首先要搞清楚什么是iOS.iOS其实是一款操作系统,就像平时我们在电脑上用的XP.Win7,都是操作系统. 那什么是操作系统呢?操作系统其实是一种软件,是直接运行 ...

  7. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

  8. PHP学习笔记之数组篇

    摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇   一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...

  9. [ Java学习基础 ] Java的对象容器 -- 集合

    当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...

随机推荐

  1. set、def、lambda、内置函数、文件操作

    set : 无序,不重复,可以嵌套 .add (添加元素) .update(接收可迭代对象)---等于批量 添加 .diffrents()两个集合不同差 .sysmmetric difference( ...

  2. 移动端页面去掉click点击 背景色变化

    a,input,em,h2{-webkit-tap-highlight-color:rgba(255,0,0,0);}给点击元素加上样式 :-webkit-tap-highlight-color:rg ...

  3. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  4. Active MQ 传输 ObjectMessage 异常

    <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFa ...

  5. SQLServer控制用户访问权限表

    连接地址:http://www.cnblogs.com/yxyht/archive/2013/03/22/2975880.html 一.需求 在管理数据库过程中,我们经常需要控制某个用户访问数据库的权 ...

  6. [转]SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定

    对普通开发人员来说经常能接触到上千万条数据优化的机会也不是很多,这里还是要感 谢公司提供了这样的一个环境,而且公司让我来做优化工作.当数据库中的记录不超过10万条时,很难分辨出开发人员的水平有多高,当 ...

  7. spring mvc的拦截器

    package com.tech.jin.interceptor.method; import java.util.Arrays; import java.util.Map; import java. ...

  8. android dialog

    /** * @Title MenuTest.java * @package com.example.standardview * @since * @version 1.0.0 * @author V ...

  9. linux驱动中printk的使用注意事项

    今天在按键驱动中增加printk(KERN_INFO "gpio_keys_gpio_isr()\n");在驱动加载阶段可以输出调试信息,但驱动加载起来后的信息,在串口端看不到输出 ...

  10. Linux网络配置基础

    linux网络配置常见有两种:桥接模式(Bridge)与NAT模式,还有一种Host-Only模式由于其局限性通常被舍弃就不加以说明了,下面我们介绍下桥接模式(Bridge)和NAT模式. 桥接模式( ...