Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型

目录

  • 概述——对Foundation框架集合类的理解
  • NSArray
  • NSDictionary
  • NSSet
  • NSArray、NSDictionary和NSSet的Mutable类型
  • Foundation框架中集合类的使用详见苹果官方文档
  • 集合类的实用操作

深层遍历

深层复制

  • 待研究

概述——对Foundation框架集合类的理解

NSArray

创建

NSArray *array = [NSArray arrayWithObjects:@"one",@"two",nil];

NSArray *array2 = @[@"one",@"two"];

访问NSArray中的元素(通过index)

array[index];

[array objectAtIndex:index];

返回NSArray的长度

[array count];

遍历NSArray

for(id obj in array){

  NSLog(@"%@",obj);

}

for(int i=0;i<[array count];i++){

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

}

NSDictionary

创建

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"key1",object1,@"key2",object2,nil];

NSDictionary *dict2 = @{@"key1":object1,@"key2":object2};

注意:key和value都可以为类对象,不一定都是字符串;

访问NSDictionary中的元素(通过key值)

[dict objectForKey:key];

dict[key];

返回NSDictionary的长度

[dict count];

遍历NSDictionary(key和value都遍历)

for(id key in [dict allKeys]){

  NSLog(@"%@",key);

  NSLog(@"%@",dict[key]);

}

NSSet

创建

NSSet *set = [NSSet setWithObjects:@"1",@"2",nil];

返回NSSet的长度

[set count];

遍历NSSet

for(id obj in set){

  NSLog(@"%@",obj);

}

NSArray、NSDictionary和NSSet的Mutable类型

允许在创建对象之后对对象进行更改(插入和删除)操作

Foundation框架中集合类的使用详见苹果官方文档

集合类的实用操作

深层遍历

实现思路:增加对所包含的集合对象的处理,在此只对NSArray,NSDictionary,NSSet这三种集合类进行处理,如果有新需求可以增加新处理

+ (void)traverseDictionary:(NSDictionary *)dict{

for (id object in [dict allValues]) {

if ([object isKindOfClass:[NSArray class]]) {

[TraverseCollection traverseArray:object];

}

else if ([object isKindOfClass:[NSDictionary class]]){

[TraverseCollection traverseDictionary:object];

}

else if ([object isKindOfClass:[NSSet class]]){

[TraverseCollection traverseSet:object];

}

else{

NSLog(@"%@",object);

}

}

}

深层复制

与深层遍历类似

待研究

Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型的更多相关文章

  1. [转]一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  2. OC学习篇之---Foundation框架中的NSDictionary类以及NSMutableDictionary类

    今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和 ...

  3. [翻译] 用 ObjectiveSugar 扩展NSArray NSDictionary NSSet NSNumber

    source - https://github.com/supermarin/ObjectiveSugar Look like a girl, act like a lady, think like ...

  4. 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...

  5. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  6. Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区

    Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...

  7. 遍历NSArray, NSDictionary, NSSet的方法总结

    1,for循环读取 NSArray: NSArray *array = /*…*/ ; i<array.count; i++) { id object = array[i]; // do sth ...

  8. Objective-C:Foundation框架-常用类-NSDictionary

    与NSString.NSArray一样,NSDictionary是不可变的,其对应可变类型为NSMutableDictionary.其用法如下: #import <Foundation/Foun ...

  9. [OC Foundation框架 - 8] NSArray排序

    1.派生 voidarrayNew() { NSArray*array = [NSArrayarrayWithObjects:",nil]; NSArray*array2 = [arraya ...

随机推荐

  1. Shell Scipt 命令行带参数,输出log

    命令行带参数,以及字符串参数放到ssh命令里可以这么放: #!/bin/bash        这行保证运行bash可以这样: ./data.sh if [ $# != 4 ]; then echo ...

  2. Python:数字

    一.数字简介 数字可以直接访问,是不可更改并且不可分割的原子类型,这些在标准类型的分类中都谈到了.不可更改意味着变更数字值的实质是新对象的创建.当然,这些对于程序员来说都是透明的,不需过多考虑. 1. ...

  3. LeetCode(3) - Longest Substring Without Repeating Characters

    这题的题意大概就是给你一个字符串"abcdecde",找到最长的子字符串长度,里面所有的子母都不重复.本例子中最长的满足条件的子字符串就是"abcde",所以应 ...

  4. Ibatis 美元符号替换为井号

    原码:where name = '$name$' or code = '$code$' 修改后: where name = #name# or code = #code#

  5. LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse

    一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: //查询语法 var query = fro ...

  6. 第一百九十五天 how can I 坚持

    晚上回来又肚子疼,拉肚子,咋搞的呢. 小米.华为.感觉虽然现在华为有些许优势,哎,还是不说了,感觉小米手机信号好像有问题. 中午吃的刀削面好像不熟,其实,怎么说呢,像开面馆,做的面顾客都吃不完,很明显 ...

  7. hibernate里createSQLQuery的addEntity()和setResultTransformer()方法

    http://langgufu.iteye.com/blog/1565397 ————————————————————————————————————————————————————————————— ...

  8. OpenXML操作word

    OpenXML概述 项目中经常需要操作word,之前的方式是采用COM接口,这个接口很不稳定,经常报错.现在开始采用OpenXML.OpenXML(OOXML)是微软在Office 2007中提出的一 ...

  9. 移动前端工作的那些事---前端制作篇之meta标签篇

    移动端前端制作有些地方不同于互联网,这篇主要讨论的是meta标签.meta标签位于head标签之间.是主要辅助HTML结构层的.meta标签不管在互联网前端还是在移动端都起了很重要的作用.这里只讨论移 ...

  10. System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或

    有可能读出的数据为NULL,可以这样改: 方法一:while (reader.Read()){ for (int i = 0; i < 7; i++) { if (reader.IsDBNull ...