IOS学习笔记之四:Foundation Kit详解(第二部分)

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.

关于对NSDictionary中内容的获取,也有两种方式,如下:

Tire *tire = [tires objectForKey:@"front-left"];(类似于Java中直接调用方法,参数是key)

or

Tire *tire = tires[@"front-right"];(类似java中的数组的调用)
2.关于mutable的含义,NSDictionary所生成的对象长度无法被更改,而NSMutableDictionary的长度是可以被更改的,例子如下:

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的转换问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值