Foundation常用的结构体
1. NSRange
- 范围 - - - 格式
NSRange( location, length )
- 例子: @”i love oc”, 求love的range
NSRange testRange = NSMakeRange(2,4)
2. NSPoint/CGPoint
- 坐标(x ,y) - - - 格式
CGPoint testPoint = CGPointMake(10, 5)
- NSPoint 就是CGPoint , 包含了CGFloat x , CGFloal y
3. NSSize/CGSize
- 宽高(width ,height) - - - 格式
CGSize testSize = CGSizeMake(20, 20)
- NSSize就是CGSize. 包含了宽(width), 高(height)
4. NSRect/CGRect
- 位置(x, y, width, height) - - - 格式
CGRect testRect = CGRectMake(10, 5, 20, 20)
- CGRect转成NSString
NSString *testStr = NSStringFromRect(testRect)
5. 结构体常用的函数
- CGPointEqualToPoint - - - 比较2个点是否相同(x, y是否相等)
- CGSizeEqualToSize - - - 同上
- CGRectEqualToRect - - - 同上
- CGRectContainsPoint - - - 判断一个point是不是包含在Rect的范围里
Foundation常用的类
4. NSDictionary
- 字典的创建和取值
- 简单创建方式
@{@“key 名”:@“value 值”, …}
- 简单获得方式
dict[@“key名”]
- 字典的遍历
- 如何获取字典中键值对的个数
NSLog(@“count = %lu”,[dict count]);
- 如何遍历
- 普通for 循环
NSArray *keys = [dict allKeys];
- 增强 for 循环
for(NSString *key in dict)
- 迭代器 ==> 直接传 key 和 value . ==>> 这个最简单,最好用
- 字典的文件读写
- 写入文件
[dict writeToFile:@“路径” atomically: YES] ;
- 读出文件
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:@“路径”];
- 注意 : 字典是无序的
5. NSMutableDictionary
- 创建
NSMutableDictionary *dictM = [NSMutableDictionary dictionary];
- 添加
[dictM setObject:@“value” forKey:@“key”];
dictM[@“newKey”] = @“9999”
[dictM setValuesForKeysWithDictionary:@{自定义的字典}]; ==>>会将传入字典中所有的键值对取出来添加到 dictM 中
- 获取
NSLog(@“name = %@”,dictM[@“name”])
- 删除
[dictM removeObjectForKey:@“name”];
- 修改
[dictM setObject:@“888” forKey:@“key”];
- 注意点
- 不能用@{} 创建可变字典
- 如果是NSDictionary, 那么 Key 不能相同
- 如果是在 NSDictionary 中出现了同名的 key, 那么后面的 key 对应的值不会被保存
- 如果是在 NSMutableDictionary 中, 后面的会覆盖前面的
6. NSNumber
- 基本数据类型转换为对象类型
- 普通写法
NSNumber *num = [NSNumber numberWithInt:age];
- 简写
NSNumber *num = @(age);
- 注意: 如果传入的是变量, 就必须写@(变量), 如果是常量, 可以写成@常量
- 对象类型转换为基本数据类型
- 普通写法
int temp = [ageN intValue];
7. NSValue
CGPoint point = CGPointMake(10,20);
NSValue *value = [NSValue valueWithPoint:point];
NSArray *arr = @[value];
Person p = {30,”lnj”, 1.75};
NSValue *value = [NSValue valueWithBytes:&p objCType:@encode(Person)];
Person res; ==>>> 从 NSValue 中取出自定义的结构体变量
[pValue getValue:&res];
8. NSFileManager
- 用来管理文件系统的
- 它是单例 NSFileManager *manager = [NSFileManager defaultManager];
- 判断文件是否存在, ==>>较为常用
- 是否是文件夹, ==>>较为常用
- 获取文件或文件夹的属性 ==>> 返回字典 ==>>包含了所有文件的属性
- 清除缓存 ==>>
- copy, delete, move
- 创建文件夹
- 是否可读,
- 是否可写,
- 是否可删除
9. Category分类
- OC特有语法
- 作用
- 可以在不修改原来类的基础上, 为这个类扩充了一些方法
- 一个庞大的类可以分模块开发 ==> 最大的用途之一
- 一个庞大的类可以由多个人来编写, 更利于团队合作 =>Foundation 就是这么写的
- 使用
- 分类也分为声明和实现2个部分
- 创建: OCFILE => File: 分类的名称 => FileType: Category =>Class: 给谁扩充方法