一.数组.  数组只能存放对象类型的数据  2.数组中的对象是有序的 (index)

    (一)可变数组   NSArray:NSObject  不可变数组 作用:容器类 存放的是对象类型的数据,不可变数组,创建的时候是什么样就是什么样,不能对数组做插入、修改、删除等操作.

      1.存数据
         NSArray *arr1 =[[NSArray alloc]initWithObjects:@"zhangSan",@"liSi",@"小红", nil];
       也可以通过Array类中的+方法创建
         NSArray *arr4 =[NSArray arrayWithObjects:@"li",@"hh",@"ww", nil];
       字面量方式创建数组   是不可变数组
         NSArray *arr5 =@[@"hh",@"mm",@"ll"];

      2.从数组中 取数据  根据索引来取  索引是从0开始

          a. objectAtIndex:

            NSString *name =[arr1 objectAtIndex:2];
           b. 字面量方式取数据   数组[索引]
               NSString *name2 =arr1[1];

               arr1数组最大索引值为2,却去取索引为3的对象,程序就会崩溃   原因:数组越界
               NSString *name3 = [arr1 objectAtIndex:3];
               崩溃原因[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]'  数组越界

   (二.)NSMutableArray : NSArray  可变数组 增删改查
             创建可变数组 并且初始化容量
            capacity 容量
              NSMutableArray *arr2 = [[NSMutableArray alloc]initWithCapacity:0];
            1.添加对象
                [arr2 addObject:@"tianQi"];
                [arr2 addObject:@"yiFu"];
                [arr2 addObject:@"haoRen"];
            2.删除对象
              删除某个对象
              [arr2 removeObject:@"tianQi"];
              删除某个索引下的对象
              [arr2 removeObjectAtIndex:1];
              删除所有对象
              [arr2 removeAllObjects];
              删除最后一个对象
             [arr2 removeLastObject];
         3.插入
            在某个索引下插入对象
            [arr2 insertObject:@"apple" atIndex:1];
         4.替换更改
            [arr2 replaceObjectAtIndex:1 withObject:@"orange"];
            将不可变数组 转换 成可变数组
           + (instancetype)arrayWithArray: 是NSArray的方法
             instacetype 哪个类调用该方法,就会返回哪个类类型的对象
             NSMutableArray *arr3 =[NSMutableArray arrayWithArray:arr1];
             [arr3 addObject:@"phone"];
            数组是可以嵌套的
            NSArray *arr8 = @[@"1",@[@"gg",@[@"100",@"pp",@[@"zhiyou",@"haoren"]]]];
(二.)字典   可变字典和不可变字典
    NSDictionary : NSObject 不可变字典  容器  是无序的
    键(key)-值(value)  只能存放对象类型
    创建方式1:
    NSDictionary *dic1 =[[NSDictionary alloc]initWithObjectsAndKeys:@"yuSan",@"productName",@"23.5",@"price",@"red",@"color", nil];
    value1,key1,value2,key2...
      字典输出样式
     ={
     color = red;
     price = "23.5";
     productName = yuSan;
     }
    创建方式2:
    NSDictionary *dic2 = [[NSDictionary alloc]initWithObjects:@[@"zhangSan",@"18"] forKeys:@[@"name",@"age"]];
    创建方式3: 静态方法创建
    NSDictionary *dic3 =[NSDictionary dictionaryWithObjectsAndKeys:@"qing",@"wether", nil];
    创建方式4: 字面量的方式创建   是不可字典
    NSDictionary *dic4 = @{@"carName": @"benChi",@"price":@"50wan"};
    //获取字典中 对象的个数
    NSLog(@"count====%lu",(unsigned long)dic4.count);
    怎么从字典中取出对象? 根据key来取
       1.  objectForKey:
           NSString *str = [dic4 objectForKey:@"carName"];
       2. 字面量方式   字典[key]
    NSString *price = dic4[@"price"];   
    //获取字典中的所有的键
    NSArray *keyArr= dic4.allKeys;
    //获取字典中的所有的值
    NSArray *valueArr =dic4.allValues;
/**********可变字典 NSMutableDictionary*******/
   // NSMutableDictionary : NSDictionary
    //创建可变字典 初始化容量
    NSMutableDictionary *dic5 =[[NSMutableDictionary alloc]initWithCapacity:0];
    //添加   修改
    [dic5 setObject:@"apple" forKey:@"fruit"];
    [dic5 setObject:@"2.5" forKey:@"price"];
    [dic5 setObject:@"heNan" forKey:@"place"];
    [dic5 setObject:@"orange" forKey:@"fruit"];
    //删除
    //删除某个key下的对象
    [dic5 removeObjectForKey:@"place"];
   // [dic5 removeAllObjects];
   // [dic5 removeObjectsForKeys:<#(NSArray *)#>]
    NSDictionary *dic6 =@{@"heNan": @[@"000",@"111",@{@"666": @"333"}]};

  (三).注意(以下在字典和数组中都存在)

      NSDictionary *dic = @{@"key":value}

        如果value是为nil 必将引发崩溃:

        避免的方法

              (1)在使用@{@”key”:value} 这种方式初始化的时候,一定要对value做是否为nil的判断,如果为ni,就不要加入Dictionary.

           (2)使用标准的初始化方法:

            NSDictionary dictionaryWithObjectsAndKeys:value1,@"v1",value2,@"v2",value3,@"v3", nil];

       问题:

          想使用 {key1:value1,key2 "",key3:value3}  但是要判断没个value 不能为nil;相当麻烦。而使用,initWithObjectsAndKeys:value1;不会崩溃,但是 系统会认为是末尾的nil,造成参数不完整。调试时难以发现。

       

ios 数组和字典的更多相关文章

  1. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}

    IOS数组.字典.NSNumber 新写法—— @[].@{}   //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...

  2. iOS - 数组与字典(NSArray & NSDictionary)

    1. 数组的常用处理方式 //--------------------不可变数组 //1.数组的创建 NSString *s1 = @"zhangsan"; NSString *s ...

  3. iOS数组、字典与json字符串的转换

    /*! * 将字典或者数组转化为JSON串 * * @param theData <#theData description#> * * @return <#return value ...

  4. iOS 数组和字典排序

    一.数组排序 数组排序方式1: //初始化可变数组 NSMutableArray *arr1=[NSMutableArray arrayWithObjects:@"giu",@&q ...

  5. iOS 数组字典操作

    iOS开发中需要大量对dictionary和array进行操作,因此我们需要一种更加安全可靠的操作方法来避免不必要的crash.当然可以通过自定义dictionary 和array重载增删改查的方法来 ...

  6. 窥探Swift之数组与字典

    说到数组和字典,只要是编过程的小伙伴并不陌生.在Swift中的数组与字典也有着一些让人眼前一亮的特性,今天的博客就来窥探一下Swift中的Array和Dictionary.还是沿袭之前的风格,在介绍S ...

  7. Objective-C中把数组中字典中的数据转换成URL

    可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对.而在OC我们要用字典(Dictionary)来存储,当然了Java用的是M ...

  8. 使用NSJSONSerialization将数组或字典转为字符串

    IOS中将数组或字典转为字符串可以用NSJSONSerialization,代码如下: NSData* data = [NSJSONSerialization dataWithJSONObject:a ...

  9. OC中如何把数组中字典的数据转换成URL?

    在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么 ...

随机推荐

  1. Python3 round() 函数

    Python3 round() 函数  Python3 数字 描述 round() 方法返回浮点数x的四舍五入值. 语法 以下是 round() 方法的语法: round( x [, n] ) 参数 ...

  2. git 基本操作命令

    1. git status 查看git 状态 2.git init 3.git push -u origin master 提交 4.git remote set "邮箱地址i" ...

  3. spring-mvc.xml 和 application-context.xml的区别

    转自:https://www.cnblogs.com/binlin1987/p/7053016.html application-context.xml是全局的,应用于多个serverlet,配合li ...

  4. load balancer does not have available server for client: provider

    Ask Question up vote6down votefavorite 4 I'm trying to use Feign client. Below is my feing client: i ...

  5. java 图片的自定义大小

    java 小功能,进行图片的自定义大小 package com.project.video.controller; import java.awt.Color; import java.awt.Gra ...

  6. NPOI创建DOCX常用操作

    1.  创建文档 XWPFDocument m_Docx = new XWPFDocument(); 2.  页面设置 //1‘=1440twip=25.4mm=72pt(磅point)=96px(像 ...

  7. hbuilder header消失

    hbuilder的header在google浏览器中调试能正常显示,但是发布到app安装到手机后headr不显示. <header class="mui-bar mui-bar-nav ...

  8. H5笔记周记

    9.4 一.介绍浏览器 1.title 主题,题目 2.url 网址  3.body 网站的内容 4.html 语言,超文本标记语言 二.文件介绍 三.标签的结构 (一些快捷键:Ctrl+s 保存   ...

  9. thinkphp两表联查并且分页

    ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示: 1.原生查询示例: $Model = new Model(); $sql = 'sel ...

  10. andorid 配置器组件和提示消息

    .xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...