什么是框架?
框架是众多API的集合,是许多类、方法、函数、文档按照一定逻辑组织起来的集合,能够让程序开发变得更容易。
Foundation框架是其他框架的基础。
1、NSRange
NSRange r = NSMakeRange(2 , 4);
// 应用举例
#import <Foundation/Foundation.h>
int main(){
NSString *str = "i love you";
NSRange range = [str rangeOfString @"love"];
NSLog(@"loc = %ld, length = %ld",range.location,range.length);
}
// 输出结果为:2 4
2、Point、Size、Rect
CGPoint p1 = NSMakePoint(10 , 20);
NSPoint p2 = CGPointMake(10 , 20);
CGRect r1 = CGRectMake(0 , 0, 100 , 50);
3、NSString
NSString *s1 = @"123sad";
NSString *s2 = [[NSString alloc] initWithFormat:@"my age is %d",10];
// 将C语言字符串转换为OC字符串
NSString *s3 = [[NSString alloc]initWithUTF8String:"asd"];
// 将OC字符串转换为C语言字符串
const char *cs = [s3 UTF8String];
// 读取文档中的内容
NSString *s4 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
// URL:资源路径
// 协议头://路径
// file://
// ftp://
// http://
NSURL *url = [[NSURL alloc] initWithString:@"http://www.baidu.com"];
NSString *s5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
// 将字符串写入文档
[@"hello" writeToFile:@"/Users/apple/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
4、NSMultableString
NSMutableString *s1 = [[NSMutableString alloc]initWithFormat:@"my age is 10"];
// 拼接字符串
[s1 appendString:@"11 12"];
// 删除固定位置、长度字符串
[s1 deleteCharactersInRange:NSMakeRange(4, 2)];
// 删除某个特定字符串
NSRange range = [s1 rangeOfString:@"is"];// 获取字符串位置、长度
[s1 deleteCharactersInRange:range];
5、NSArray
1>NSArray的创建
NSArray *array1 = [NSArray arrayWithObjects:@"qwe",@"asd",@"123" ,nil];
// 快速创建一个NSArray对象(不可用于可变数组的创建)
NSArray *array2 = @[@"qwe",@"asd",@"123"];
2>NSArray元素个数
NSUInteger num2 = array2.count;
3>NSArray中元素的访问
NSLog(@"%@",array2 objectAtIndex:1);
NSLog(@"%@",array2[0]);
4>NSArray数组遍历
// 1
for (id obj in array2) {
// 获取元素位置
NSUInteger i = [array2 objectAtIndex:obj];
NSLog(@"%d--%@",i,obj);
}
// 2
[array2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%d---%@",idx,obj);
// 停止遍历
if (idx == 1)
{
*stop = YES;
}
}];
6、NSMutableArray
// 初始化定义
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"qwe",@"asd", nil];
// 添加元素
[array addObject:@"zxc"];
// 删除全部元素
[array removeAllObjects];
// 删除指定元素
[array delete:@"asd"];
// 删除第n个元素
[array removeObjectAtIndex:2];
7、NSSet(NSMutableSet)
// 初始化定义
NSSet *set = [NSSet setWithObjects:@"qwe",@"asd",@"zxc", nil];
// 随机返回一个元素
NSString *str = [set anyObject];
NSArray与NSSet的比较
1>相同点
* 都是集合,可以存放多个OC对象
* 只能存放OC对象,不能存放非OC对象(基本数据类型:int,char,float,结构体,枚举等)
* 本身都不可变,都有一个可变的子类
2>不同点
*NSArray有顺序,NSSet无序
7、NSDictionary
字典:
key—> value
索引—> 文字内容
存储的东西都是键对值
// 1>直接定义
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name",@"gary",@"address",@"beijing",@"qq",@"12345678", nil];
// 2>利用数组定义
NSArray *keys = @[@"name",@"address",@"qq"];
NSArray *values = @[@"gary",@"beijing",@"1234567"];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:values forKeys:keys];
// 利用key获取内容
id obj = [dict objectForKey:@"address"];
NSLog(@"%@",obj);
// 3>快速定义
NSDictionary *dict = @{@"name" : @"gary",@"address" : @"beijing"};
id obj = dict[@"name"];
NSLog(@"%@",obj);
// 4>遍历
// 1利用for循环
NSArray *keys = [dict allKeys];
// 字典是无序的
for (int i=0;i<dict.count;i++)
{
NSString *obj = dict[keys[i]];
NSLog(@"%@",obj);
}
// 2利用block
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@--%@",key,obj);
}];
Foundation框架一个常见错误,不小心修改了系统自带头文件,解决办法如下: