NSArray

NSArray的创建

NSArray *array = [NSArray arrayWithObject:@“jack”]   创建单个元素

NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil] 创建多个元素

快速创建一个NSArray对象

NSArray *array4 = @[@"jack", @"rose", @"4324324"]

[array.count ]   计算数组元素的个数

array3[0]

[array3 objectAtIndex:1]  访问数组的元素

注意:OC数组不能存放nil值,nil是数组的结束标记

     OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等

  NSArray *array = [NSArray array] 这个数组永远是空数组

遍历数组

方法一、

Person *p = [[Person alloc] init];

    NSArray *array = @[p, @"rose", @"jack"];

       for (int i = 0; i<array.count; i++)

       {

            NSLog(@"%@", array[i]);

       }

方法二、

 id obj代表着数组中的每一个元素

    int i = 0;

        for (id obj in array)

        {

            // 找出obj元素在数组中的位置

            NSUInteger i = [array indexOfObject:obj];

            NSLog(@"%ld - %@", i, obj);

            //i++;

            if (i==1)

            {

                break;

            }

        }

方法三、

 [array enumerateObjectsUsingBlock:

     // 每遍历到一个元素,就会调用一次block

     // 并且当前元素和索引位置当做参数传给block

     ^(id obj, NSUInteger idx, BOOL *stop)

     {

         NSLog(@"%ld - %@", idx, obj);

         if (idx == 0)

         {

             // 停止遍历

             *stop = YES;

         }

     }];

NSMutableArray

创建数组

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]

添加元素

[array addObject:[[Person alloc] init]];

[array addObject:@"jack"];

删除元素

[array removeAllObjects]

删除指定的对象

[array removeObject:@"jack"];

[array removeObjectAtIndex:0];

NSSet

创建

NSSet *s = [NSSet set]

NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil]

随机拿出一个元素

NSString *str =  [s2 anyObject];

NSLog(@"%@", str);

NSMutableSet

NSMutableSet *s = [NSMutableSet set];

添加元素

[s addObject:@"hack"];

删除元素

[s removeObject:<#(id)#>];

NSSet和NSArray的对比

1 共同点

1) 都是集合,都能存放多个OC对象

2)只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)

3)本身都不可变,都有一个可变的子类

2 不同点

NSArray有顺序,NSSet没有顺序

NSDictionary

字典都是由索引(key)和文字内容组成的(value)

创建不可变字典

方式一、

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

方式二、

NSArray *keys = @[@"name", @"address"];

NSArray *objects = @[@"jack", @"北京"];

NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

方式三、

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:

@"jack", @"name",

@"北京", @"address",

@"32423434", @"qq", nil];

快速创建一个字典

NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};

取出字典某个对象

id obj = [dict objectForKey:@"name"]

快速取出字典某个对象

id obj = dict[@"name"]

可变字典 NSMutableDictionary

NSMutableDictionary *dict = [NSMutableDictionary dictionary]

添加键值对

[dict setObject:@"jack" forKey:@"name"];

移除键值对

[dict removeObjectForKey:@“name”];

遍历字典

方法一、

  NSArray *keys = [dict allKeys];

        for (int i = 0; i<dict.count; i++)

        {

            NSString *key = keys[i];

            NSString *object = dict[key];

            NSLog(@"%@ = %@", key, object);

        }

方法二、

 [dict enumerateKeysAndObjectsUsingBlock:

     ^(id key, id obj, BOOL *stop) {

         NSLog(@"%@ - %@", key, obj);

         // *stop = YES;

     }];

黑马程序员_ Objective-c 之Foundation笔记(二)的更多相关文章

  1. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  2. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  3. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  4. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  5. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  6. 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate

    Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...

  7. 黑马程序员_ Objective-c 之Foundation笔记(一)

    结构体  NSRange: 用来表示范围 创建 NSRange r1 = {2, 4} NSRange r2 = {.location = 2, .length = 4} NSRange r3 = N ...

  8. 黑马程序员_ Objective-c 面向对象笔记详解

    1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...

  9. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

随机推荐

  1. ie8兼容

    最近在做ie8兼容,把遇到的问题整理了一下 1. margin:0 auto; 无法居中 解决方法:1.换成h4的文档类型 <!DOCTYPE html PUBLIC "-//W3C/ ...

  2. echarts图表标签(axisLabel)折行

    在项目中遇到了一个echarts图表标签过长需折行的需求,so引出这篇总结,啦啦啦有帮助就多多支持啦,撒花撒花撒花~~~~ 在此不对echarts其他用法做解释,详细见echarts文档(点击前往) ...

  3. 事件的委托处理 javascript

    javascript的事件模型,采用"冒泡"模式,即子元素的事件会逐级向上"冒泡",成为父元素的事件.这点可以简化事件的绑定... 例如,一个表格(table) ...

  4. 最短路径问题——floyd算法

    floyd算法和之前讲的bellman算法.dijkstra算法最大的不同在于它所处理的终于不再是单源问题了,floyd可以解决任何点到点之间的最短路径问题,个人觉得floyd是最简单最好用的一种算法 ...

  5. Telnet弱口令猜解【Python脚本】

    telnet 弱口令猜解脚本 测试环境:window2003.centos7 #! /usr/bin/env python # _*_ coding:utf-8 _*_ import telnetli ...

  6. Android 多线程处理之多线程用法大集合

    handler.post(r)其实这样并不会新起线程,只是执行的runnable里的run()方法,却没有执行start()方法,所以runnable走的还是UI线程. 1.如果像这样,是可以操作ui ...

  7. Chromuim proxy Api 提取代里proxy调用Chrome隐身多窗口 多COOKIE 工具

    Chromuim proxy Api提取proxy调用Chrome隐身 多COOKIES 多窗口工具每一个代理拥有一个独立的窗口和USERDATA 独立COOKIES 伪装UA UA:<scri ...

  8. WP8应用上传失败查错

    开发的一个应用,好久没有更新. 最近做了些修改,在设备上安装测试,没什么 问题,上传到STORE,收到反馈说有两个操作必挂. 知道了直接设备安装测试和从STORE上下载,会有些不同. http://s ...

  9. 单元测试 – ASP.NET MVC 4 系列

           在开发可测试软件的过程中,单元测试已成为确保软件质量的一个不可或缺部分.测试驱动开发(Test-Driven Development,TDD)是编写单元测试的一种方法,采用该方法的开发人 ...

  10. linux 持续构建(自动部署) 重启动tomcat或进程的脚本

    #!/bin/sh TOMCAT_PATH=`dirname "$0"` echo "TOMCAT_PATH is /usr/local/tomcat" PID ...