一、数组

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. com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files

    http://stackoverflow.com/questions/33951853/com-android-build-api-transform-transformexception-com-a ...

  2. python :添加的内容具有之前的功能用delegate绑定事件

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. Linux杂乱小知识点

    1.不同网段的主机不能建立TCP连接 2.TCP客户端可以用bind绑定自己的IP与port(一般情况下不需要绑定,port由系统自动分配) 3.accept() 函数返回一个套接字,send / r ...

  4. Netsuite > Hierarchy of transactions in Inventory cost calculation

    First in day worksheets + Purchase Transactions (Receipts, Bills, Adjustments, Assembly Builds) + Tr ...

  5. 【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接

    在CentOS安装 因Rabbit MQ使用Erlang,所以需要先安装Erlang,安装过程中可能会遇到种种问题,可参考CentOS 6.5安装Erlang/OTP 17.0.然后就可以安装MQ了. ...

  6. PHP基础结业感想与总结!

    之前来传智是我认真调查和思考后得出的结论,我做程序员的第一目标是赚钱和学习技术,有一句话"艺多不压身".相信班上所有人的目标都是,这一点都不会庸俗,但是各个人的目的就未必一样了.我 ...

  7. CVE-2016-4758: UXSS in Safari's showModalDialog

    I would like to share about details of Safari's UXSS bug(CVE-2016-4758). This bug was fixed in Safar ...

  8. Momentics创建Photon图形程序

    Photon microGui是qnx原生的UI图形工具.Qnx下开发Photon 一般是使用phAB来创建,使用默认的Momentics IDE也可以创建Photon图形程序. 首先需要创建一个c/ ...

  9. 禁止从别的应用启动Activity

    在Manifest.xml中设置android:exported="false"即可,如: <activity android:name=".MyAty" ...

  10. BLE教程 - 官方tutorial翻译

    关键术语和概念 1. Generic Attribute Profile(GATT)GATT配置文件是一个通用规范,用于在BLE链路上发送和接收被称为"属性"的数据块.目前所有的B ...