1.NSDictionary 存有key值及其定义。NSDictionary的查找速度比NSArray要快N倍。先来看一个例子:
Tire *t1 = [Tire new];
Tire *t2 = [Tire new];
NSDictionary *tires = [NSDictionary dictionaryWithObjectsAndKeys: t1,
@"front-left", t2, @"front-right", nil];
or
NSDictionary *tires = @{@"front-left" : ti, @"front-right" : t2};
关于对NSDictionary中内容的获取,也有两种方式,如下:
Tire *tire = [tires objectForKey:@"front-left"];(类似于Java中直接调用方法,参数是key)
or
Tire *tire = tires[@"front-right"];(类似java中的数组的调用)
NSMutableDictionary *tires = [NSMutableDictionary dictionary];
[tires setObject:tl forKey:@"front-left"];
[tires setObject:t2 forKey:@"front-right"];
[tires removeObjectForKey:@"back-left"]; //删除对象
3.NSNumber也是被NS成为一个对象的例子之一
NSNumber *number;
number = @'X'; // char
number = @12345; // integer
number = @12345ul; // unsigned long
number = @12345ll; // long long
number = @123.45f; // float
number = @123.45; // double
number = @YES; // BOOL
4.NSValue
这个虽然不是很重要,但还是了解一下才好。
NSValue 可以转化NSRect,NSNumber,NSSIze等类型,并把他们加入到一个array中。
NSRect rect= NSMakeRect(1,2,2,1);
NSValue *value =[NSValue valueWithBytes:&rect objectType:@encode(NSRect)];
[array addObject:value];
getValue可以获得你想要获得的那个值的地址
5.NSNull
用来消除没有的不确定性,赋值之后表示一定没有。
6.找文件的一个程序例子
不需要新的类,只需要在 main中进行编程就足够了,程序代码如下:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//create a file manager(主要用来获取所有的文件和文件夹)
NSFileManager *manager;
manager=[NSFileManager defaultManager];
//create a string as a address(用来将地址付给一个变量,容易管理和修改)
NSString *home;
home=[@"~" stringByExpandingTildeInPath];
//create a directory enumerator(因为要遍历hom文件夹中所有的文件,所以要建立一个enumerator)
NSDirectoryEnumerator *direnum;
direnum =[manager enumeratorAtPath:home];
//create a mutable array to store files(文件最后是要放在array里的)
NSMutableArray *files;
files=[NSMutableArray arrayWithCapacity:42];
//create a NSString as a file name
//and put all files in to files array(把遍历到得所有文件全部放到文件数组中)
NSString *filename;
while(filename=[direnum nextObject])
{
if([[filename pathExtension] isEqualTo:@"txt"])
{
[files addObject:filename];
}
}
//create a enumerator for files
//notice this is different from enumerator for directories(将文件数组中所有的文件名子打印出来)
NSEnumerator *fileenum;
fileenum =[files objectEnumerator];
while(filename =[fileenum nextObject])
{
NSLog(@"%@",filename);
}
}
return 0;
}
分析:我们要找到home文件夹下所有后缀为txt的文件,这个时候,需要考虑三个问题,怎么获取所有的文件,获取的文件存放在哪里,怎样获取全部的已经存放的文件?创建一个文件管理器用来获取所有的文件将文件放在数组中用枚举器来获取所有的文件,并将数组中的文件全部打印出来。以上的方法是用普通的枚举方法,而接下来的代码用了快速枚举的方法来获取所有的文件并把文件打印出来
//以上是普通的枚举方法,还有一种fast enumerator的方法,像这样
for(NSString *filename in [manager enumeratorAtPath:home])
{
if([[filename pathExtension] isEqualTo:@"jpg"])
{
[files addObject:filename];
}
}
for(NSString *nameofFile in files)
{
NSLog (@"%@", nameofFile);
}
这里就涉及了一个while循环加if和for循环加if的转换问题