Foundation => Objective-C _ Part6

来源:互联网 发布:光盘打印软件 编辑:程序博客网 时间:2024/05/01 22:01

Foundation常用的结构体

1. NSRange

  1. 范围 - - - 格式 NSRange( location, length )
  2. 例子: @”i love oc”, 求love的range NSRange testRange = NSMakeRange(2,4)

2. NSPoint/CGPoint

  1. 坐标(x ,y) - - - 格式CGPoint testPoint = CGPointMake(10, 5)
  2. NSPoint 就是CGPoint , 包含了CGFloat x , CGFloal y

3. NSSize/CGSize

  1. 宽高(width ,height) - - - 格式 CGSize testSize = CGSizeMake(20, 20)
  2. NSSize就是CGSize. 包含了宽(width), 高(height)

4. NSRect/CGRect

  1. 位置(x, y, width, height) - - - 格式 CGRect testRect = CGRectMake(10, 5, 20, 20)
  2. CGRect转成NSString NSString *testStr = NSStringFromRect(testRect)

5. 结构体常用的函数

  1. CGPointEqualToPoint - - - 比较2个点是否相同(x, y是否相等)
  2. CGSizeEqualToSize - - - 同上
  3. CGRectEqualToRect - - - 同上
  4. CGRectContainsPoint - - - 判断一个point是不是包含在Rect的范围里

Foundation常用的类

4. NSDictionary

  1. 字典的创建和取值
    • 简单创建方式 @{@“key 名”:@“value 值”, …}
    • 简单获得方式 dict[@“key名”]
  2. 字典的遍历
    • 如何获取字典中键值对的个数 NSLog(@“count = %lu”,[dict count]);
    • 如何遍历
      • 普通for 循环 NSArray *keys = [dict allKeys];
      • 增强 for 循环for(NSString *key in dict)
      • 迭代器 ==> 直接传 key 和 value . ==>> 这个最简单,最好用
  3. 字典的文件读写
    • 写入文件 [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];//valueWithBytes:  接收一个指针, 需要传递需要包装的结构体的变量的地址//objCType 需要传递需要包装的数据类型

8. NSFileManager

  1. 用来管理文件系统的
  2. 它是单例 NSFileManager *manager = [NSFileManager defaultManager];
  3. 判断文件是否存在, ==>>较为常用
  4. 是否是文件夹, ==>>较为常用
  5. 获取文件或文件夹的属性 ==>> 返回字典 ==>>包含了所有文件的属性
  6. 清除缓存 ==>>
  7. copy, delete, move
  8. 创建文件夹
  9. 是否可读,
  10. 是否可写,
  11. 是否可删除

9. Category分类

  1. OC特有语法
  2. 作用
    • 可以在不修改原来类的基础上, 为这个类扩充了一些方法
    • 一个庞大的类可以分模块开发 ==> 最大的用途之一
    • 一个庞大的类可以由多个人来编写, 更利于团队合作 =>Foundation 就是这么写的
  3. 使用
    • 分类也分为声明和实现2个部分
    • 创建: OCFILE => File: 分类的名称 => FileType: Category =>Class: 给谁扩充方法
0 0