黑马程序员-Foundation框架以及Foundation框架中的基础类

认识Foundation框架


—— <a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a> 期待与您交流! -------
框架是有许多类、方法、函数以及文档按照一定的规则组织起来的集合,以便于程序员更加方便、迅速的开发程序。
cocoa程序编写主要用到2个框架Foundation和ApplicationKit(UIKit)。其中Foundation框架主要定义了一些基础类,供程序员来使用,而Application Kit主要是一些用户界面设计的类,用于Mac开发使用此库。Foundation框架中的所有类都继承自NSObject这个对象。
作为通用的面向对象的函数库,Foundation提供了字符串,数值的管理,容器及其枚举,以及一些其他的与图像用户界面没有直接关系的功能。其中用于类和常数的“NS”前缀来自于Cocoa的来源,NextSTEP。它可以在Mac OX X和iOS中使用。
框架包含了很多开发中常用的数据类型:结构体,枚举,类
注意:
要想使用Foundation框架中的功能,包含它的主文件即可#import <Foundation/Foundation.h>
有时候会在不经意之间修改了系统自带的头文件,比如NSString.h,只需要删除Xcode的缓存即可

字符串的基本概念和常用处理方法
在Foundation框架中,提供了NSString类,用于处理字符串对象。在C语言中字符串在一对引号中表示。OC是C语言的一种延展,换句话说,OC语言是建立在C语言的基础上的(C的基础上添加了面向对象的内容,smalltalk语言)。因此,为了区别两者的字符串,OC语言的字符串必须以@开头,引号当中则是字符串的内容,如@“abc”。此外,NSString对象,一旦被创建,就不可以更改。如若需要一个可以更改的字符串对象,需要创建NSMutableString实例。

字符串对象的创建
创建一个字符串
NSString *string = @”这是一个字符串常量”;
创建一个空的字符串
NSString *string1 = [[NSString alloc] init];
NSString *string2 = [NSString string];
快速创建一个字符串
NSString *string = [[NSString alloc] initWithString:@”快速创建字符串”];
NSString *string = [NSString stringWithString:@”快速创建一个字符串”];
比较字符串对象
比较字符串(测试字符串内容是否相同)
NSString *string1 = [[NSString alloc] initWithFormat:@”test”];
NSString *string2 = [[NSString alloc] initWithFormat:@”test”];
if ([string1 isEqualToString:string2])
{
NSLog(@”测试两个字符串是否相等”);
}
测试字符串是否为同一个对象
NSString *string1 = [[NSString alloc] initWithFormat:@”test”];
NSString *string2 = [[NSString alloc] initWithFormat:@”test”];
if (string1 == string2) {
NSLog(@”测试两个字符串是否为同一个对象”);
}
比较字符串的大小
NSString *string1 = [[NSString alloc] initWithFormat:@”a”];
NSString *string2 = [[NSString alloc] initWithFormat:@”b”];
NSLog(@”[string1 caseInsensitiveCompare:string2] : %ld”, [string1 caseInsensitiveCompare:string2]);
求字符串的长度
NSString *string1 = [[NSString alloc] initWithFormat:@”string length”];
NSUInteger *length = [string1 length];
字符串的转换
改变字符串大小写
NSString *hello = @‘“hello WORLD”;
NSLog(@“%@”, [hello uppercaseString]); //全部大写
NSLog(@”%@”, [hello lowercaseString]); //全部小写
NSLog(@”%@”, [hello capitalizedString]); // 首字母大写,其他字母小写
将字符串转换成基本数据类型
NSString *string = @”2.467”;
NSLog(@”%d”, [string boolValue]); //转换成BOOL类型
NSLog(@”%f”, [string floatValue]); //转换成浮点型
NSLog(@”%f”, [string doubleValue]); //转换成双精度型
NSLog(@”%d”, [string intValue]); //转换成整型
将字符串转换为数组
NSString *string = @”One Two Three Four”;
NSArray *array = [string componentsSeparatedByString:@” “];
截取字符串对象
截取字符串
NSString *string = [[NSString alloc] initWithFormat:@”abcdef”];
// 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
NSString *string1 = [string substringToIndex:2];
// 以指定位置开始(包括指定位置的字符),并包括之后的全部字符
NSString *string2 = [string substringFromIndex:2];
截取字符串
NSString *str1 = @”1”, *str2 = @”2”;
NSString *string = [[NSString alloc] initWithFormat:@”这时拼接:%@ and %@”, str1, str2];
NSString *string1 = [str1 stringByAppendingFormat:@”%@”, str2];
NSString *string2 = [str1 stringByAppendingString:str2];
查询字符串
NSString *link = @”asdastarget=_blankddasd”;
NSRange range = [link rangeOfString:@”target=_blank”];
if (range.location != NSNotFound)
{
NSLog(@”string 找到了”);
}
可变字符串对象
可变字符串—-NSMutableString,它继承自NSString
插入字符串
NSMutableString *str = [NSMutableString stringWithString:@”字符串”];
[str insertString:@”可变” atIndex:0];
删除字符串
NSMutableString *str = [NSMutableString stringWithString:@”字符串”];
[str deleteCharactersInRange:NSMakeRange(1, 2)];
替换字符串
NSMutableString *str = [NSMutableString stringWithString:@”字符串”];
[str replaceCharactersInRange:NSMakeRange(0,2) withString:@”羊肉”];
使用NSURL读写字符串

什么是URL?
URL的全称是Uniform Resource Locator(统一资源定位符)URL是
互联网上标准资源的地址互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置根据一个URL就能找到唯一的一个资源

URL的格式?
基本URL包含协议、主机域名(服务器名称\IP地址)、路径协议 服务器的域名 路径
可以简单认为: URL == 协议头://主机域名/路径

常见的URL协议头(URL类型)
http\https :超文本传输协议资源, 网络资源
在URL前加https://前缀表明是用SSL加密的。
你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的
https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全
ftp :文件传输协议

使用NSURL读写字符串
传入完整的字符串创建
NSURL *url = [NSURL URLWithString:@”file:///Users/apple/Desktop/str.txt”];
通过文件路径创建(默认就是file协议的)
NSURL *url = [NSURL fileURLWithPath:@”/Users/apple/Desktop/str.txt”];

数组的概念和常用方法
数组的基本概念
Foundation中的数组(NSArray,NSMutableArray)是一组有序的对象集合,通过索引下标取到数组中的各个元素。与字符串相同,数组也有可变和不可变数组之分。此外,数组中不可以存放基本数据类型,只能存放类的实例(对象)。如若需要将基本数据类型、结构体放入数组中,需要通过NSNumber、NSValue进行数据的“封装”;

不可变数组—-NSArray
数组的初始化
NSArray *firstArray = [NSArray arrayWithObject:@”one”];
// 多个元素初始化时,注意nil作为数组的结束
NSArray *secondArray = [NSArray arrayWithObjects:@”one”, @”two”, nil];
NSArray *thirdArray = [NSArray arrayWithArray:secondArray];
NSArray *FourArray = [NSArray arrayWithContentsOfFile:path];
数组的常用方法
NSArray *array = [NSArray arrayWithObjects:@”a”, @”b”, @”c”, nil];
// 获取数组中的元素个数
NSInteger count = [array count];
//根据下标访问对象
NSString *firstObj = [array objectAtIndex:0];
//在原来的数组上追加对象,返回一个新的数组对象
NSArray *addArray = [array arrayByAddingObject:@”ddd”];
//用指定的字符串将数组中的元素连接起来
NSString *arrayStr = [array componentsJoinedByString:@”,”];
//数组中是否包含某对象
BOOL isContain = [array containsObject:@”bbb”];
//查询指定对象在数组中的元素,如果没此元素,返回NSNotFound
NSInteger index = [array indexOfObject:@”ccc”];
//获取数组中最后一个元素
NSString *lastString = [array lastObject];

可变数组—-NSMutableArray,它继承自NSArray
//初始化,设定元素个数为5,但可以更改
NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:5];
//向数组中添加一个元素
[mutableArray addObject:@”aaa”];
//向数组中指定下标插入元素
[mutableArray insertObject:@”ccc” atIndex:0];
//移除指定元素
[mutableArray removeObject:@”aaa”];
//移除指定下标的元素
[mutableArray removeObjectAtIndex:0];
//向数组中添加数组
[mutableArray addObjectsFromArray:array];
字典的概念和常用方法
Foundation中的字典(NSDictionary, NSMutableDictionary)是由键–值对组成的数据集合。正如,我们在字典里查找单词的定义一样。通过key(键),查找对象value(值),key通常是字符串对象,也可以是其他任意类型对象。在一个字典对象中,key的值是唯一的。此外,字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。

不可变字典—-NSDictionary
不可变字典的初始化
NSNumber *numObj = [NSNumber numberWithInt: 100];
// 以一个元素初始化
NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@”key”];
//初始化两个元素
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:numObj,@”valueKey”, numObj2, @”valueKey2”, nil];
//初始化新字典,新字典包含 otherDic
NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];
//以文件内容初始化字典
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
不可变字典的常用方法
//获取字典数量
NSInteger count = [dic count];
//通过key获取对应的value对象
NSObject *valueObj = [dic objectForKey:@”key”];
//将字典的key转成一个枚举对象,用于遍历
NSEnumerator *enumerator = [dic keyEnumerator];
//获取所有键的集合
NSArray *keys = [dic allKeys];
//获取所有值的集合
NSArray *values = [dic allValues];

可变字典—-NSMutableDictionary继承自NSDictionary
//初始化一个空的可变字典(注意以下代码前后无关联性)
NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@”v1”, @”key1”, @”v2”, @”key2”, nil];
NSDictionary *dic3 = [NSDictionary dictionaryWithObject:@“v3” forKey:@”key3”];
//向字典2对象中添加整个字典对象3
[dic2 addEntriesFromDictionary:dic3];
//向字典2对象中追加一个新的key3和value3
[dic2 setValue:@”value3” forKey:@”key3”];
//初始化一个空的可变字典
NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
//将空字典1对象的内容设置为字典2对象相同
[dic1 setDictionary:dic2];
[dic1 removeObjectForKey:@”key1”];//将字典中key1对应的值删除
NSArray *array = [NSArray arrayWithOjbects:@”key1”, nil];
[dic2 removeObjectsForKeys:array];//根据制定的数组(key)移除字典2的内容
[dic1 removeAllObjects]; // 移除字典所有对象
集合概念和常用方法
在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个,并且它也分为可变和不可变对象(可变集合对象,NSMutableSet)。

不可变集合—-NSSet
NSSet的初始化
//类似与数组的构建,直接创建一个集合
NSSet *set1 = [[NSSet alloc] initWithObjects:@”one”, @”two”, nil];
//通过数组的构建集合
NSArray *array = [NSArray arrayWithObjects:@”1”, @”2”, @”3”, nil];
NSSet *set2 = [[NSSet alloc] initWithArray:array];
//通过已有集合构建集合
NSSet *set3 = [[NSSet alloc] initWithSet:set2];
NSSet的常用方法(BOOL )
//集合3中对象的个数
int count = [set3 count];
//以数组的形式返回集合3中所有的对象
NSArray *allObjects = [set3 allObjects];
//返回集合3中的任意一个对象
id object = [set3 anyObject];
//集合4中是否包含内容为2的字符串对象,如果包含返回YES,否则返回NO
BOOL isContain = [set4 containsObject:@”2”];
//集合4中与集合2中是否存在有相同元素的对象,如果有返回YES,否则为NO
BOOL isIntersect = [set4 intersectsSet:set2];
//集合4与集合5的元素是否完全匹配,如果匹配返回YES,否则为NO
BOOL isEqual = [set4 isEqualToSet:set5];
// 集合4是否是集合5的子集合,如果是返回YES,否则为NO
BOOL isSubset = [set4 isSubsetOfSet:set5];
//创建一个新的集合2,集合2有两个对象(a和b)
NSSet *set1 = [NSSet setWithObjects:@”a”, nil];
NSSet *set2 = [set1 setByAddingObject:@”b”];
//通过已有集合7和集合8,创建一个新的集合9
NSSet *set7 = [NSSet setWithObjects:@”a”, nil];
NSSet *set8 = [NSSet setWithObjects:@”z”, nil];
NSSet *set9 = [set7 setByAddingObjectsFromSet:set8];
//通过已有的集合10和数组对象,创建一个新的集合11
NSArray *array = [NSArray arrayWithObjects:@”a”, @”b”, @”c”, nil];
NSSet *set10 = [NSSet setWithObjects:@”z”, nil];
NSSet *set11 = [set10 setByAddinObjectsFromArray:array];

可变集合—-NSMutableSet,它继承自NSSet
可变集合的常用方法
//创建一个空的集合(注意以下代码前后无关联性)
NSMutableSet *set1 = [NSMutableSet set];
NSMutableSet *set2 = [NSMutableSet setWithObjects:@”1”, @”2”, nil];
NSMutableSet *set3 = [NSMutableSet setWithObjects:@”a”, @”2”, nil];
//集合2“减去”集合3中的元素,集合2最后元素只有1,且为1
[set2 minusSet:set3];
//集合2与集合3中的元素的交集,集合2最后元素只有1个,且为2
[set2 intersectSet:set3];
//集合2与集合3中的元素的并集,集合2最后元素只有3个,且为1,2,a
[set2 unionSet:set3];
//将空集合1设置为集合3中的内容
[set1 setSet:set3];
//根据数组的内容删除集合中的对象
[set2 addObjectsFromArray:array];
[set2 removeObject:@”1”];
[set2 removeAllObjects];

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值