您的位置:首页 > 职场人生

黑马程序员 日记(十)

2015-07-30 15:55 549 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
——-

黑马程序员 日记(十)

Foundation框架简单介绍

框架的概念和应用介绍

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

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

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

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

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

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

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

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

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

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

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

</span>

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

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

一.NSMutableString:

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

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

中的方法NSMutableString都可以使用。

1、NSMutableString与NSString的区别:

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

NSArray是OC中的数组类,其中只能存放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
arrayWithObje
13080
ct:@"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是可变数组,与NSstring与NSMutableString一样,主要用法

见下段代码:

[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;

}

四、NSSet与NSMutableSet

1、NSSet也是一种容器类,只能存放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;

}

2、NSMutableSet为可变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;

}

五、NSDictionary和NSMutableDictionary

1、NSDictionary

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;

}

2、NSMutableDictionary

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 黑马程序员