黑马程序员 日记(十)


——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

黑马程序员 日记(十)




Foundation框架简单介绍



框架的概念和应用介绍


框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以


使研发程序变得更容易。在OS X系统下有100多个框架,这些框架可以用


来开发应用程序,处理MacAddress Book结构、刻录CD、播放DVD


使用QuickTime播放电影、歌曲等等。


为所有程序开发奠定基础的框架成为Foundation框架。该框架允许使用一


些基本对象,如数字和字符串,以及一些对象集合,如数组、字典和集合。


其他功能包括处理日期和时间、自动化的内存管理、处理基础文件系统、存


储(或归档)对象、处理几何数据结构(如点和长方形)。


Foundation框架包括大量的类、方法和函数。在OS X下,大约有125个可


用头文件,可以通过一种简单的形式导入,语句如下


<span style="font-size:18px;">#import<Foundation/Foundation.h>


</span>


即导入了Foundation所有的头文件,所以不必担心是否导入了正确的头文件。


且不必预编译的头文件可以避免额外的时间开销。


.NSMutableString


NSMutableStringNSString的子类,相当于是一个字符串链表可以动态的在字符串中


添加字符串、删除字符串、插入字符串等,能够较为灵活的操纵字符串。另外,NSString


中的方法NSMutableString都可以使用。


1NSMutableStringNSString的区别:


1> NSString是不可变字符串(即占用的存储空间固定,里面的内容不能进行修改),里


面的内容不可进行修改;

2> NSMutableString是可变的(占用的存储空间不固定,可以动态变化,里面的内容可


以修改),里面的内容可以根据需要随时进行修改;



2、常用方法:


1> NSMutableString的创建、字符串拼接


[objc] view plaincopy



#import <Foundation/Foundation.h>



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

    //定义一个NSMutableString

    NSMutableString *s1 = [NSMutableString string];

    //从字符串末添加一个字符串

    [s1 appendString:@"这是一个可变字符串!"];

    NSUInteger a = s1.length;

    //凭借一段格式化字符串到字符串末

    [s1 appendFormat:@"%ld个字符。", a];

    NSLog(@"%@",s1);

    return 0;

}


2> 删除字符串中的指定字符串、或指定位置的字符串、在指定位置插入字符串、替换字符


串中的某段字符串[objc] view plaincopy



#import <Foundation/Foundation.h>


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

{

    //定义一个NSMutableString

    NSMutableString *s1 = [NSMutableString string];


    //从字符串末添加一个字符串

    [s1 appendString:@"这是一个可变字符串!"];


    //删除可变字符串中字符串!这个子字符串,通常搭配rangeOfString使用

    NSRange range = [s1 rangeOfString:@"字符串!"];

    [s1 deleteCharactersInRange:range];


    //在指定位置插入字符串

    [s1 insertString:@"字符串!" atIndex:6];


    //替换字符串中的指定字符串

    [s1 replaceCharactersInRange:NSMakeRange(0, 2) withString:@"这就是"];

    NSLog(@"%@",s1);


    return 0;

}



3、注意事项


1> 使用NSMutableString *s1 = @"";这种形式创建的还是不可变的字符串;


2> .string可以修改字符串的内容,并将源对象的所有字符串覆盖掉;


二、NSArray


NSArrayOC中的数组类,其中只能存放OC对象,并且是有顺序的,不能存放非OC对象


(如int/float/struct等基本数据类型),NSArray是不可变的,一旦初始化完毕其


中的内容就永远是固定的,不能添加也不能删除里面的元素。


1、常用方法:


1> 创建数组、取出数组中特定元素


[objc] view plaincopy




#import <Foundation/Foundation.h>


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

{


    NSArray *arr1 = [NSArray arrayWithObject:@"jack"];

    NSArray *arr2 = [NSArray arrayWithObjects:@"jim", @"rose", nil nil];


    //编译器特性,快速创建数组

    NSArray *arr3 = @[@"jack", @"jim", @"rose"];


    //获取array中元素的个数

    NSInteger a = [arr3 count];

    NSInteger b = arr3.count;


    //取出数组中特定元素

    NSString *str1 = [arr2 objectAtIndex:1];

    NSString *str2 = arr2[1];



    return 0;

}



2> 数组的遍历


[objc] view plaincopy


<pre name="code" class="objc">    //使用for循环调用


for (int i = 0; i < arr2.count; i++)

{

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


}


//增强型for循环调用

for (NSString *p in arr2) {


    NSLog(@"%@", p);


}


//使用block遍历

[arr3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOLBOOL *stop)

 {

    NSLog(@"idx=%ld, obj=%@", idx, obj);

    if (idx == 1) {

        *stop = YES;

    }

}];


2、注意事项:


1> NSArray直接使用NSLog打印的时候是小括号括起来的形式;


2> NSArray中不能存基本数据类型,也不能存储nil,会将nil视为数组的结束;




三、NSMutableArray


NSMutableArray是可变数组,与NSstringNSMutableString一样,主要用法


见下段代码:



[objc] view plaincopy


#import <Foundation/Foundation.h>


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

{

    //创建NSMutableArray

    NSMutableArray *array = [NSMutableArray array];

    NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"jim", @"rose", nil nil];


    //NSMutableArray中添加元素

    [array addObject:@"jack"];


    //删除指定位置的元素

    [array1 removeObjectsAtIndexes:[NSIndexSet indexSetWithIndex:1]];

    NSLog(@"%@",array1);


    return 0;


}




四、NSSetNSMutableSet


1NSSet也是一种容器类,只能存放OC对象,但是与数组不同,NSSet是无序的,主


要用法如下:



[objc] view plaincopy

#import <Foundation/Foundation.h>


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

{

    //初始化set

    NSSet *set = [NSSet setWithObjects:@"jack", @"jim",@"rose",@"kate",nil];


    //计算set中有几个元素

    NSInteger a = set.count;


    //随机取一个元素,因为set没有顺序

    NSString *str = [set anyObject];

    NSLog(@"set对象有%ld个元素,随即取出一个是:%@", a, str);


    return 0;


}



2NSMutableSet为可变set,主要用法如下:



[objc] view plaincopy

#import <Foundation/Foundation.h>


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

{

    //创建一个NSMutableSet

    NSMutableSet *set = [NSMutableSet setWithObjects:@"jack", @"jim", nil nil];


    //添加一个元素

    [set addObject:@"rose"];


    //移除一个元素

    [set removeObject:@"jim"];

    NSLog(@"%@", set);


    return 0;


}




五、NSDictionaryNSMutableDictionary


1NSDictionary


1> NSDictionary类似于JAVA中的map类,存放的是键值对<key, value>,主要使


用方法见下段代码:



[objc] view plaincopy

#import <Foundation/Foundation.h>


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

{

    //创建一个NSDictionary对象

    NSDictionary *dic = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

    NSArray *keys = @[@"name",@"age"];

    NSArray *objs = @[@"jack",@"20"];

    NSDictionary *dic1 = [NSDictionary dictionaryWithObjects:objs forKeys:keys];


    //编译器特性,快速创建NSDictionary

    NSDictionary *dic2 = @{@"name" : @"jack", @"age" : @"20"};


    //取出key对应的value

    id obj = [dic objectForKey:@"name"];

    id obj1 = dic1[@"age"];


    //取出dictionary中键值对的对数

    NSInteger a = dic2.count;


    return 0;


}


2> 遍历


[objc] view plaincopy

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

{


    //创建一个可变dictionary

    NSMutableDictionary *dic = [NSMutableDictionary dictionary];


    //添加一个元素

    [dic setObject:@"jack" forKey:@"name"];

    [dic setObject:@"beijing" forKey:@"address"];


    //dic中所有的key取出放到数组中

    NSArray *arr = [dic allKeys];


    //for循环遍历

    for (int i = 0; i < dic.count; i++) {

        NSLog(@"key:%@, value:%@", arr[i], dic[arr[i]]);

    }


    //使用block遍历

    [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOLBOOL *stop) {

        NSLog(@"key:%@, value:%@", key, obj);

    }];


    return 0;


}


2NSMutableDictionary


NSMutableDictionary是可变的键值对集合类,主要使用方法如下:


[objc] view plaincopy

#import <Foundation/Foundation.h>


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

{

    //创建一个可变dictionary

    NSMutableDictionary *dic = [NSMutableDictionary dictionary];


    //添加一个元素

    [dic setObject:@"jack" forKey:@"name"];


    //如果为同一个key设定不同元素,后面的会覆盖前面的

    [dic setObject:@"jim" forKey:@"name"];


    //移除特定元素

    [dic removeObjectForKey:@"name"];


    return 0;


}





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值