黑马程序员-iOS基础-Foundation框架基础
来源:互联网 发布:ai印花软件 编辑:程序博客网 时间:2024/05/22 14:00
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
黑马程序员-iOS基础-Foundation框架基础
一、Foundation框架基础
作用:Foundation框架是其他所有IOS框架的基础
包含了很多开发中常用的数据类型:结构体;枚举;类等。
使用方法: 想要使用Foundation框架中的数据类型,包含它的主文件即可
二、OC结构体
1、NSRange(范围)
成员:
location位置:NSUInteger
length长度:NSUInteger
定义方式
要求掌握
NSMakeRange(int location, int length);
NSString的rangeOfString方法
在查找字符串的情况下,如果可以查找到,则location是有一个正值的,但如果查找不到,返回的是NSNotFound,而且NSNotFound=-1。
2、NSPoint/CGPoint
成员:两个CGFloat/double型变量x和y
作用:用来表示屏幕上的一个点
定义方式
开发中常用CGPoint(跨平台)
定义函数
NSMakePoint
CGPointMake
3、NSSize/CGSize
成员:两个CGFloat/double型变量width和height
作用:用来表示UI元素的尺寸
定义方式
定义函数
NSMakeSize
CGSizeMake
4、NSRect/CGRect
成员:
CGPoint(Rect左上角点的位置)
CGSize
作用:表示屏幕上的一块区域
定义方式
定义函数
NSMakeRect
CGRectMake
5、将结构体转换为字符串的函数
NSStringFromRange
NSStringFromPoint
NSStringFromSize
NSStringFromRect
举例:
6、常量
CGPointZero指坐标原点
CGSizeZero
CGRectZero
使用CG开头的常量和函数要添加CoreGraphics框架
7、其他用法
CGPointEqualToPoint 比较两个点释放相同,另有相同的Size和Rect函数
CGRectContainsPoint 判断举行是否包含某个点
三、Foundation常用类
1、NSString字符串
字符串创建
对象方法
1.最普通简单的字符串
NSString *s1 = @"4654651";
2.带参数的组合字符串
[[NSString alloc] initWithFormat:@"age is %d", 10];
3.C字符串转换为OC字符串
[[NSString alloc] initWithUTF8String:"Jack"];
4.从文件读取字符串
NSString *s4 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil ]; // NSUTF8StringEncoding 用到中文就可以用这种编码
5.从本地或者网络读取资源转换成字符串
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"] NSString *s5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil ]; // URL: 资源路径 // 协议头://路径 Http://->网络 file://->本地 ftp://->
类方法(常用)
NSString *s6 = [NSString stringWithFormat:@"5465"];NSString *s7 = [NSString stringWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil ]; // 创建本地文件的URLNSURL *url1 = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"]; // 最普通的创建URL的类方法NSURL *url2 = [NSURL URLWithString:@"file:///Users/apple/Desktop/1.txt"];NSString *s8 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil ];
字符串的导出
[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil ]; // atomically:原子性:若写入新文件时中断,YES则文件不会创建,NO时会创建//另有类似的writeToURL方法
子类NSMutableString可变字符串(继承自NSString,拥有NSString的方法)
字符串拼接
appendString
appendFormat
删除字符串中某个范围内的字符
// 删除s1中的is方法1[s1 deleteCharactersInRange:NSMakeRange(4, 2)];// 删除s1中的is方法2NSRange range = [s1 rangeOfString:@"is"]; // 获取is的范围[s1 deleteCharactersInRange:range];
2、NSArray数组
数组的创建
OC数组只能存放OC对象,不能存放非OC对象类型,如int、struct、enum等
不能存放nil值
// 创建数组NSArray *array = [NSArray array]; // 这个array永远是空数组NSArray *arr1 = [NSArray arrayWithObject:@"Jack"];NSArray *arr2 = [NSArray arrayWithObject:@"Jack", @"Rose", nil]; // nil是数组元素结束的标记NSArray *arr3 = @[@"Jack", @"Rose", @"dack"]; // 快速创建一个NSArray对象,尽量用这种
获取数组元素个数
// 获取数组元素个数 [arr2 count]; arr2.count; // count是获取数组元素个数的方法
访问数组中的元素
// 访问数组中的元素 [arr2 objectAtIndex:1]; // 最原始的方法 arr2[0];// OC编译器特性也支持此格式
遍历数组中的元素
// 遍历数组中的元素NSArray *arr4 = @[@"Jack", @"Rose", @"dack", @"bitch", @"fuck", nil];// 最普通的写法for(int i = 0 ; i < arr4.count ; i++){NSLog(@"%@", arr4[i]);}// 快速遍历,id obj代表数组中的每一个元素for(id obj in arr4){// 找出obj元素在数组中的位置NSUInteger i = [arr4 indexOfObject:obj];NSLog(@"%ld - %@", i, obj);}// block遍历[arr4 enumerateObjectsUsingBlock:// 每遍历到一个元素,就调用一次block// 并且当前元素和索引位置当做参数传给block^(id obj, NSUInteger idx, BOOL *stop){NSLog(@"%ld - %@", idx, obj);// 停止遍历if(idx == 1){*stop = YES;}}];
子类NSMutableArray可变数组
NSMutableArray *marray = [NSMutableArray array];NSMutableArray *marray1 = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];// OC数组不能放基本数据类型、结构体、枚举等,也不可以是nil// addObject:向可变数组中添加元素[marray addObject:[[Person alloc] init]];[marray addObject:@"Jack"];/* 错误写法[marray addObject:10];[marray addObject:nil];*/// 移除所有元素[marray removeAllObjects];// 移除指定元素[marray1 removeObject:@"Jack"];// 按索引移除指定元素[marray removeObjectAtIndex:2];// 错误写法// @[] 只创建不可变数组NSArrayNSMutableArray *array = @[@"jack", @"rose"];[array addObject:@"jim"];
3、NSSet
创建方法
set 创建,没有元素
setWithObject 单个元素
setWithObjects 多个元素
访问元素
anyObject 随机,不确定是哪个
元素个数
count
如:
NSSet *s = [NSSet set];NSSet *s2 = [NSSet setWithObjects:@"jack", @"rose", @"scort", @"sam", nil]; // 初始化setNSString *str = [s2 anyObject]; // 访问set中的元素NSLog(@"%@", str);NSLog(@"%ld", s2.count);
子类NSMutableSet
set 创建
addObject 增加元素
removeObject 移除指定元素元素
NSMutableSet *s = [NSMutableSet set];[s addObject:@"hack"]; // 添加元素[s removeObject:@"jack"]; // 移除元素
NSSet与NSArray的异同点
1、共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型,如基本数据类型、结构体struct、枚举enum
* 都有一个可变的子类,本身是不可变的
2、不同点
* NSArray是有顺序的,NSSet没有顺序
4、NSDictionary字典
创建
NSDictionary *dict4 = @{@"name" : @"jack", @"address" : @"Beijing", @"QQ" : @"djaf"}; // 此处是利用了编译器特性,将键值对逐个写入,但是存储时是无序的 // 创建只有一个键值对的字典NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"]// 根据键值数组创建多个键值对的字典NSArray *keys = @[@"name", @"address"];NSArray *objects = @[@"jack", @"Beijing"];NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];// 创建多个键值对的字典NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"jack", @"name",@"Beijing", @"address",@"45123", @"QQ", nil];
访问键值对
// 根据键获取对应值id obj = [dict ObjectForKey:@"name"];// 编译器特性快速获取键值id obj = dict[@"name"];
统计键值对数
NSLog(@"%ld", dict.count); // count返回键值对数
字典的遍历
// 字典不允许有相同的key,但允许有相同的value// 字典是无序的// 遍历NSDictionary *dict4 = @{@"name" : @"jack", @"address" : @"Beijing", @"QQ" : @"djaf"};// 用for循环遍历NSArray *keys = [dict4 allKeys]; // 取key至一个数组中,但key无序for(int i=0; i<dict.count; i++){NSString *key = keys[i];NSString *object = dict[key];NSLog(@"%@ = %@", key, object);}// 用block遍历 (提示的时候双击或者回车即可)[dict4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){NSLog(@"%@ = %@", key, obj);*stop = YES; // 遍历一次即退出}];
子类NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary];// 添加键值对,没有顺序之分的[dict setObject:@"jack" forKey:@"name"];[dict setObject:@"Beijing" forKey:@"address"];[dict setObject:@"rose" forKey:@"name"]; // 这里会把前面对应的值覆盖掉[dict removeObjectForKey:@"name"]; // 根据键移除键值对NSLog(@"%@", dict);/* 错误写法 @{key : value,...}返回值是不可变字典NSMutableDictionary *dict = @{@"name" : @"jack", @"address" : @"Beijing", @"QQ" : @"djaf"};[dict setObject:@"rose" forKey:@"name"];*/
5、NSNumber
作用:将基本数据类型包装为OC对象
创建方法:
@+数字(编译器特性)
// 编译器特性 @+number 创建NSNumber类型对象NSNumber *nn = @30;int age = 100;@(age); // 将age包装成NSNumber对象// 将各种基本数据类型包装成NSNumber对象@10.5;@YES@'a' // NSNumber对象@"a" // NSString对象
其他
// NSNumber的创建NSNumber *num = [NSNumber numberWithInt:10]NSNumber *n = [NSNumber numberWithDouble:10.5];
基本数据类型与NSString类型转换
// 基本数据类型与NSString类型转换int a = 20;NSString *str = [NSString stringWithFormat:"%d", a];int e = [str intValue];
基本数据类型与NSNumber类型转换
// 基本数据类型与NSNumber类型转换NSNumber *n = [NSNumber numberWithDouble:10.5];double d = [n doubleValue];
6、NSValue
作用:将非OC类型包装成OC对象
NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
// NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValueCGPoint p = CGPointMake(10, 10);// 将结构体包装为Value对象NSValue *value = [NSValue valueWithPoint:p];// 解包装为NSPoint/CGPoint类型[value pointValue];
7、NSDate
作用: 对时间进行操作
方法
创建方法
// 创建一个时间对象NSDate *date = [NSDate date];
其他方法
// 创建一个时间对象NSDate *date = [NSDate date];// 打印的时间是0时区格林尼治时间(北京-东八区)NSLog(@"%@", date);// 比date晚5秒的时间NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];// 从1970年开始走过的秒数NSTimeInterval seconds = [date2 timeIntervalSince1970];
时间格式化,需要调用NSDateFormatter类
NSDate不能直接在屏幕显示,必须转换成NSString
NSDate->NSString
// 时间格式化NSDate *date = [NSDate date];// 显示Date必须先转换成字符串// 日期格式化类NSDateFormatter *formatter = [[NSDateFormatter alloc] init];// y 年 M 月 d 日 m 分 s 秒 H (24)时 h(12)时formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *str = [formatter stringFromDate:date];
NSString->NSDate
// 字符串时间转换为NSDate型NSString *time = @"2011/09/10 18:16";NSDateFormatter *formatter = [[NSDateFormatter alloc] init];formatter.dateFormat = @"yyyy-MM-dd HH:mm";NSDate *date3 = [formatter dateFromString:time];
- 黑马程序员-iOS基础-Foundation框架基础
- 黑马程序员---iOS基础---Foundation框架
- 黑马程序员----foundation框架基础
- 黑马程序员--Foundation框架基础
- 黑马程序员-IOS-OC基础-Foundation框架的简单使用
- 黑马程序员——IOS基础(Foundation框架一)
- 黑马程序员——IOS基础(Foundation框架二)
- 黑马程序员--iOS--Objective-C基础 (Foundation框架 一 )
- 黑马程序员-IOS基础之OC框架(Foundation)
- 黑马程序员--iOS--Objective-C基础 (Foundation框架 二)
- 黑马程序员---OC基础---Foundation框架学习
- 黑马程序员-Foundation框架以及Foundation框架中的基础类
- 黑马程序员-IOS-OC基础-Foundation
- iOS Foundation 基础框架
- 黑马程序员——IOS基础——Foundation框架——结构体、字符串、数组
- 黑马程序员——零基础学习iOS开发——13 Foundation框架
- 黑马程序员---IOS基础---OC之Foundation框架的基本对象
- 黑马程序员——ios开发基础之OC中的Foundation框架(一)
- git使用总结
- UIScrollView滑动选页
- CSS选择器、优先级与匹配原理
- php连接MySQL的类,支持读写分离
- hloj1105
- 黑马程序员-iOS基础-Foundation框架基础
- 为UIWebView实现离线浏览
- 生产单据号
- /dev/null 的用途
- 创建带有单选按钮的对话框
- 笔记99--自定义控件系列大结局三
- Nginx+uwsgi部署django应用
- 天猫浏览型应用的CDN静态化架构演变
- [转]Trie树优化算法:Double Array Trie 双数组Trie