Objective-C之集合

//数组存放的内容必须是NSOject对象
        //数组存放的内容是有序的
        /**
         *  NSArray  不可变数组
         */

        /**
         *  1.创建对象
         */

        //使用初始化方法
        NSArray *array1 = [[NSArray alloc]initWithObjects:@10, @"娜娜", @"怀玉", @"满明强", @"金明", @"阿福", nil];
        NSArray *array2 = [[NSArray alloc]initWithArray:array1];

        //类方法
        NSArray *array3 = [NSArray arrayWithObjects:@"曲国伟", @"小南", @"周雨琪", @"bobo", @"xiaozun", nil];
        //字面量方法
        NSArray *array4 = @[@"yangyunda", @"yangshukai", @"yida", @"wumingwei"];
        NSLog(@"array4 = %@", array4);

        /**
         *  2.数组查找
         */
        //通过下标访问对象
        NSLog(@"%@", array1[1]);

        NSString *str1 = [array1 objectAtIndex:2];
        NSLog(@"%@", str1);

        //通过对象访问下标
        NSString *str2 = @"阿福";
        NSInteger index = [array1 indexOfObject:str2];
        NSLog(@"%lu", index);

        /**
         *  3.判断数组中是否包含某个指定的对象
         */
        BOOL isHave = [array3 containsObject:@"小南"];
        NSLog(@"%d", isHave);

        /**
         *  4.NSString和NSArray之间的转换
         */
        NSString *string1 = @"孙超&程晗&孟玲旭";
        //将一个字符串按照指定字符截取, 每段内容存放在数组中
        NSArray *strArray = [string1 componentsSeparatedByString:@"&"];
        NSLog(@"%@ %@ %@", strArray[0], strArray[1], strArray[2]);

        //将数组中的元素按照指定的字符串拼接成新的字符串对象
        NSArray *array5 = @[@"雷坤", @"于艳萍", @"尹浩"];
        NSString *string2 = [array5 componentsJoinedByString:@"&"];
        NSLog(@"%@", string2);

        //练习: 将字符串转为数组
        NSString *strTemp = @"http://www.imanhua.com/Cover/2011-10/hyrz.jpg&http://www.imanhua.com/Cover/2011-09/op.jpg&http://www.imanhua.com/Cover/2012-04/yjdwb.jpg";
        NSArray *tempArray = [strTemp componentsSeparatedByString:@"&"];
        NSLog(@"%@", tempArray);

        /**
         *  NSMutableArray 可变的数组
         */

        //1.创建对象

        //初始化方法
        NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@10, @4.3, @"dfa", @"qewfk", nil];
        //类方法
        NSMutableArray *mArray1 = [NSMutableArray arrayWithObjects:@"阿斯蒂芬", @43, @54.43, @"大师傅", nil];
        //2.添加元素 插入元素
        [mArray addObject:@"王"];
        NSLog(@"%@", mArray);
        [mArray insertObject:@10 atIndex:1];
        NSLog(@"%@", mArray);
        //3.删除元素
        [mArray1 removeObject:@"阿斯蒂芬"];
        NSLog(@"%@", mArray1);
        //4.替换指定位置的对象
        [mArray1 replaceObjectAtIndex:1 withObject:@"wuse"];
        NSLog(@"%@", mArray1);
        //5.交换两个指定位置的对象
        [mArray1 exchangeObjectAtIndex:1 withObjectAtIndex:2];
        NSLog(@"%@", mArray1);

        /**
         *  字典 存放键值对类型的数据
         */

        /*
         name : zhangsan
         sex : boy
         age : 13

         */

        NSDictionary 不可变的字典
           字典中存放的数据是无序的
         字典中key值是唯一的
        /**
         *  1.创建对象
         */
        初始化方法
        NSDictionary *dict1 = [[NSDictionary alloc]initWithObjectsAndKeys:@"zhangsan", @"name", @"boy", @"sex", @18, @"age", nil];
        NSLog(@"%@", dict1);

        NSDictionary *dict2 = [[NSDictionary alloc]initWithObjects:@[@"zhangsan", @"boy", @18] forKeys:@[@"name", @"sex", @"age"]];
        NSLog(@"%@", dict2);
        //类方法
        NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"liuaoran", @"name", @"nan", @"sex", @18, @"age", nil];
        NSLog(@"%@", dict3);
        //字面量方法
        NSDictionary *dict4 = @{
                                @"name" : @"gaojie",
                                @"sex"  : @"boy",
                                @"age"  : @28,
                                @"hobby": @"nana"
                               };
        NSLog(@"%@", dict4);

        /**
         *  2.查找
         */
        //根据key查找object
        NSString *string1 = [dict4 objectForKey:@"name"];
        NSLog(@"%@", string1);

        //下标法, key值作为下标
        NSLog(@"%@", dict4[@"name"]);

        /**
         *  3.获取字典长度
         */
        NSLog(@"%lu", [dict4 count]);

        //NSMutableDictionary 可变的字典

        //1.创建对象
        NSMutableDictionary *mdic = [[NSMutableDictionary alloc]initWithDictionary:@{
                                                                                     @"name" : @"gaojie",
                                                                                     @"sex"  : @"boy",
                                                                                     @"age"  : @28,
                                                                                     @"hobby": @"nana"
                                                                                     }];
        NSLog(@"%@", mdic);
        NSMutableDictionary *mdic1 = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"wangqiang", @"name", @"nan", @"gender", @18, @"age", nil];
        NSLog(@"%@", mdic1);

        NSMutableDictionary *mdic2 = [[NSMutableDictionary alloc]initWithObjects:@[@"wangqiang", @"nan", @18]forKeys:@[@"name", @"gender", @"age"]];
        NSLog(@"%@", mdic2);
        NSMutableDictionary *mdic3 = [NSMutableDictionary dictionaryWithObject:@[@"zhangsan", @"boy", @18] forKey:@[@"name", @"sex", @"age"]];
        NSLog(@"%@", mdic3);
        //2.添加,修改键值对
        //如果key值存在,修改key对应的object数据
        //如果key值不存在,添加键值对
        [mdic addEntriesFromDictionary:@{@"address" : @"qinghe"}];
        NSLog(@"%@", mdic);
        [mdic1 setObject:@14 forKey:@"class"];
        NSLog(@"%@", mdic1);

        [mdic1 setValue:@"清河大厦" forKey:@"address"];
        NSLog(@"%@", mdic1);
        [mdic1 setValue:@"金五星" forKey:@"address"];
        NSLog(@"%@", mdic1);

        /*
         setValue: forKey: 的key参数类型必须是NSString *
         setObject: forKey: 的key参数类型可以是任意类型的对象

         setValue: forKey: 是NSObject对象的方法, 也就是说所有的OC对象都有这个方法
         setObject: forKey: 是NSMutableDictionary类中特有的方法

         */

        //3.删除
        [mdic1 removeObjectForKey:@"address"];
        NSLog(@"%@", mdic1);
        //删除所有内容
        [mdic1 removeAllObjects];
        NSLog(@"%@", mdic1);

        //NSSet 集合(元素不可以重复,无序存放)
        //创建一个set对象

        NSSet *set = [NSSet setWithObjects:@"liuyang", @"wangzhiting", @"wangqiang", @"yvejianhua", @"liuyang", nil];
        NSLog(@"%@", set);

        //任意取出一个元素
        NSString *str = [set anyObject];
        NSLog(@"str = %@", str);

        //取出所有的元素
        NSArray *array = [set allObjects];
        NSLog(@"%@", array);

        //获取集合中元素的个数
        NSLog(@"%lu", set.count);

        //判断对象是否在集合中
        BOOL isHave = [set containsObject:@"liuyang"];
        NSLog(@"%d", isHave);

        //NSMutableSet 可变的集合
        //创建对象
        NSMutableSet *mset = [NSMutableSet setWithObjects:@"zhangmingjie", @"wangzhizhun", nil];

        //添加对象
        [mset addObject:@"-1"];
        NSLog(@"%@", mset);

        //删除对象
        [mset removeObject:@"-1"];
        NSLog(@"%@", mset);
时间: 2024-07-29 19:13:59

Objective-C之集合的相关文章

CoreAnimation编程指南

转自http://www.cocoachina.com/bbs/read.php?tid=124478 第一章      核心动画概念核心动画是一套包含图形绘制,投影,动画的Objective–C类集合.它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流畅的动画.动态的动画接口很难创建,但是核心动画通过提供如下接口使这些创建起来变得更加简单:简单易用的高性能混合编程模型.类似视图一样,你可以通过使用图层来创建复杂的接口.轻量级的数

核心动画笔记

核心动画(Core Animation) 一.Core animation简单介绍 1.Core Animation,中文翻译为核心动画,是一套包含图形绘制,投影,动画的Objective–C类集合.它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能.Core Animation自身并不是一个绘图系统.它只是一个负责在硬件上合成和操纵应用内容的基础构件 2.Core Animation是跨平台的,可以用在Mac

concurrencyProgrammingGuide 1

thread用来表述执行代码的独立path.os x的线程执行基于POSIX 线程API. process用来表述一个运行操作,可以包含多个线程. task用来描述工作的抽象概念. Concurrency and Application Design  不是依赖threads,os x和ios使用的是asynchronous design approach来解决并发的问题.异步函数在操作系统中已经使用多年用来初始化可能需要花费大量时间的task,比如从disk读取数据.当被调用的时候,异步函数会

Objective—C语言的新魅力——Nullability、泛型集合与类型延拓

Objective-C语言的新魅力 一.引言 在Xcode7中,iOS9的SDK已经全面兼容了Objective-C的一些新特性和新功能.这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行兼容,无缝的衔接低版本的iOS系统,那么这些特性有什么样的用处呢,作为开发者,我保证你一定会爱上他们,如果你可以将这些新特性都应用于你的开发,你的开发效率和代码质量,相比之前,会有一个很大的提升. 二.Nullability检测的支持 在swift语言中,通过!和?可以将对象声明成Op

Objective - C 字符串 数组 字典 集合的基本使用

1.字符串的基本使用(NSString,NSMutableString) 字符串初始化常用的基本方法: NSString *str = @"jacky"; //临时的字符串 NSString *str2 = [[NSString alloc] initWithFormat:@"%@,20岁",str]; // 初始化方法 NSString *str3 = [NSString stringWithFormat:@"%@,20 岁",str];  /

Objective C笔记(第一天)

• OC语言概述 1.早在20世纪80年代早期,Bard Cox发明了Objective C, 是扩充的C,面向对象的编程语言. 2.NEXTSTEP简称NS a.1985年,Steve Jobs成?立了NeXT公司. b.1988年,NeXT SoftWare公司获得了OC的语言授权, NEXTSTEP环境成为了苹果操作系统,创建的开发包.MACOS c.1996年,12月20?日,苹果公司宣布收购了NeXT software公司,NEXTSTEP环境为apple公司下主要开发.发?行操作系统

iOS开发核心语言Objective C —— 全部知识点总结

本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础.建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在開始Objective C语言的学习,假设您遇到问题也能够与我探讨.另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦.能够新浪微博私信?关注极客James,期待与您的共同学习和探讨! ! 由于时间有限,每

刨根问底Objective-C Runtime

http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime-(2)%5Bnil%5D-object-and-class-and-meta-class/ 刨根问底Objective-C Runtime(1)- Self & Super 刨根问底Objective-C Runtime(2)- Object & Class & Meta Class 刨根问底Objective-C Runtime(

iOS知识点集合

一.前言部分 文中的问题多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.怎样防止指针的越界使用问题? 答案: 1 .防止数组越界,必须让指针指向一个有效的内存地址, 2. 防止向一块内存中拷贝过多的内容 3. 防止使用空指针 4 .防止改变const修改的指针 5. 防止改变指向静态存储区的内容 6. 防止两次释放一个指针 7. 防止使用野指针. 2.http请求方式有哪些? 答案: 1)GET 2)HEAD 3)PUT 4)DELETE 5)POST 6)OPTIONS 3.uivi

IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合

第一.复制对象的基本概念 复制一个对象为副本,开辟一块新的内存来存储副本对象. 第二.如果一个对象想具备复制的功能,必须实现<NSCopying>协议和<NSMutableCopying>协议 NSObject自带的常用的对象有:NSNumber.NSString.NSArray.NSDictionary.NSMutableArray.NSMutableDictionay.NSMutableString,copy产生的对象时不可变的,mutableCopy产生的对象时可变的 第三.