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. Epic - Seed Number

    Find the seed of a number. Eg : 1716 = 143*1*4*3 =1716 so 143 is the seed of 1716. find all possible ...

  2. Spring MVC + Spriing + MyBatis整合,写给新人

    开发环境: 开发工具:MyEclipse 8.6 数据库:MySQL 操作系统:WIN8.1 Jar包: Spirng和SpringMVC版本:3.2.9 MyBatis版本:3.2.8 其他关联Ja ...

  3. STL源码分析读书笔记--第三章--迭代器(iterator)概念与traits编程技法

    1.准备知识 typename用法 用法1:等效于模板编程中的class 用法2:用于显式地告诉编译器接下来的名称是类型名,对于这个区分,下面的参考链接中说得好,如果编译器不知道 T::bar 是类型 ...

  4. 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求

    DotNet.Net.MySocket是SLB.NET(Server Load Balance服务器负载均衡)项目中的核心组件. 在实际的项目中发现,单进程的服务端处理高并发的客户请求能力有限. 所以 ...

  5. eCryptfs文件系统测试

    650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...

  6. phonegap,Cordova 使用html5标签

    某些安卓手机的webview使用location.href="tel:123456"不能调到打电话的界面,可以用下面的解决办法: config.xml文件最后加上一行: <a ...

  7. mac机器下远程仓库添加完毕之后,却无法上传应有的内容。

    Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you ha ...

  8. ef6 code first

    http://www.cnblogs.com/Bce-/p/3684643.html http://www.cnblogs.com/Gyoung/tag/Entity%20Framework/ htt ...

  9. HDU 1846 Brave Game(简单巴什博弈)

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. TQImport3XLS.Map

    property Map: TStrings; 设置数据集字段和Excel单元格之间定义映射属性以下列方式: FieldName=CellRange 导入单独的单元格 Field1=A1 Field1 ...