NSDictionary等基本类型的使用方法

简介:
2)NSNull

NSNull大概是Cocoa里最简单的类了,只有一个方法

+ (NSNull *) null;

可以这样添加到集合中

[contact setObject: [NSNull null]

forKey: @"home fax machine"];

访问时:

id homefax;

homefax = [contact objectForKey: @"home fax machine"];

if (homefax == [NSNull null]) {

// ... no fax machine. rats.

}

//[NSNull null]总是返回一样份数值,所以你可以使用“==”讲该值与其他值进行比较……


22、NSDictionary和NSMutableDictionary

A) NSDictionary

字典是关键字和其定义的集合,也被成为散列表或关联数组,使用的是键查询的优化存储方式

1)创建方法: 使用dictionaryWithObjectsAndKeys:来创建字典

+ (id) dictionaryWithObjectsAndKeys: (id) firstObject, ...;

使用方法:

Tire *t1 = [Tire new];

Tire *t2 = [Tire new];

Tire *t3 = [Tire new];

Tire *t4 = [Tire new];

NSDictionary *tires;

tires = [NSDictionary dictionaryWithObjectsAndKeys:

t1, @"front- left", t2, @"front- right",

t3, @"back- left", t4, @"back- right", nil];

2)常用方法

- (id) objectForKey: (id) aKey;

使用方法:

Tire *tire = [tires objectForKey: @"back- right"];   //如果没有则会返回nil值

B) NSMutableDictionary

1)创建方法:

可以向类NSMutableDictionary发送dictionary消息

也可以使用函数+ (id) dictionaryWithCapacity: (unsigned int) numItems;

2)常用方法

可以使用setObject:forKey:方法给字典添加元素:

- (void) setObject: (id) anObject forKey: (id) aKey;

- (void) removeObjectForKey: (id) aKey;

使用方法:

NSMutableDictionary *tires;

tires = [NSMutableDictionary dictionary];

[tires setObject: t1 forKey: @"front- left"];

[tires setObject: t2 forKey: @"front- right"];

[tires setObject: t3 forKey: @"back- left"];

[tires setObject: t4 forKey: @"back- right"];

//若已经存在,则会用新值替换原有的值

[tires removeObjectForKey: @"back- left"];

23、不要创建NSString、NSArray或NSDictionary的子类,因为在Cocoa中,许多类实际上是以类簇的方式实现的,即他们是一群隐藏在通用接口之下的与实现相关的类

24、Foundation实例 //查找文件

A)使用枚举遍历

int main (int argc, const char *argv[])

{

NSAutoreleasePool *pool;

pool = [[NSAutoreleasePool alloc] init]; //自动释放池

NSFileManager *manager; //Cocoa中有很多类都是单实例构架,即只需要一个实例,你真的只需要一个文件管理器

manager = [NSFileManager defaultManager]; // defaultManager方法创建一个属于我们的NSFileManager对象

NSString *home;

home = [@"~" stringByExpandingTildeInPath]; // stringByExpandingTildeInPath方法可将~替换成当前用户的主目录

NSDirectoryEnumerator *direnum; //NSEnumerator的子类

direnum = [manager enumeratorAtPath: home]; //创建一个枚举条件

NSMutableArray *files;

files = [NSMutableArray arrayWithCapacity: 42]; //把搜索的结果作为文件存储

NSString *filename;

while (filename = [direnum nextObject]) {//调用nextObject时,都会返回该目录中的一个文件的另一个路径,也可搜索子目录

if ([[filename pathExtension]   // pathExtension输出文件的扩展名(去掉了前面的点.)

isEqualTo: @"jpg"]) {

[files addObject: filename];

}

}

NSEnumerator *fileenum;

fileenum = [files objectEnumerator];

while (filename = [fileenum nextObject]) {

NSLog (@"%@", filename);

}

[pool drain];

return (0);

} // main

B)使用快速遍历

int main (int argc, const char * argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

NSFileManager *manager;

manager = [NSFileManager defaultManager];

NSString *home;

home = [@"~" stringByExpandingTildeInPath];

NSMutableArray *files;

files = [NSMutableArray arrayWithCapacity: 42];

for (NSString *filename

in [manager enumeratorAtPath: home]) {

if ([[filename pathExtension]

isEqualTo: @"jpg"]) {

[files addObject: filename];

}

}

for (NSString *filename in files) {

NSLog (@"%@", filename);

}

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2012/03/15/2397549.html,如需转载请自行联系原作者

相关文章
|
1月前
|
JavaScript 前端开发 数据安全/隐私保护
如何使用 Symbol 实现私有属性和方法?
【10月更文挑战第22天】使用 `Symbol` 实现私有属性和方法是一种在JavaScript中模拟封装和隐私保护的有效方式,虽然存在一定的局限性,但在很多实际开发场景中能够满足对代码结构和数据隐藏的需求,提高代码的质量和可维护性。
|
编译器 C++ Kotlin
【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val
【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val
77 0
|
7月前
|
安全 Swift
Swift 语言:什么是可选类型(Optional)?如何处理可选类型的安全解包?
Swift的可选类型是处理值可能缺失的类,用?表示。它们能表示有值或无值状态。安全解包用`if let`或`guard let`避免崩溃,而强制解包`!`则风险较高,若值为`nil`会触发运行时错误。
54 0
|
7月前
|
存储 JavaScript 前端开发
对象字面量和对象的封装(结合柯里化)
对象字面量和对象的封装(结合柯里化)
59 0
学习TypeScrip4(数组类型)
学习TypeScrip4(数组类型)
49 0
|
PHP 开发者
强类型返回值|学习笔记
快速学习强类型返回值
强类型返回值|学习笔记
|
编译器 C++
【C进阶】自定义类型(1)结构体
目录 1、结构体的基础知识 2、结构体的声明 3、特殊的声明 4、结构体的自引用 5、结构体变量的定义和初始化 6、结构体内存对齐 练习1 练习2 练习3 练习4-结构体嵌套问题 7、修改默认对齐数 8、结构体传参
【C进阶】自定义类型(1)结构体
【Swift4】(5) 函数基本使用 | 可变参数 | inout引用传递 | 函数类型返回值 | 函数嵌套
【Swift4】(5) 函数基本使用 | 可变参数 | inout引用传递 | 函数类型返回值 | 函数嵌套
188 0
|
API iOS开发
iOS - 如何深拷贝Array内元素、自定义对象、及自定义对象的属性(上)
关于深拷贝、浅拷贝,请看上篇iOS - 深拷贝、浅拷贝探索验证