码迷,mamicode.com
首页 > 其他好文 > 详细

OC基础(24)

时间:2015-12-03 23:19:50      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

NSMutableArray基本概念

本小节知识点:

  1. 【理解】NSMutableArray介绍
  2. 【理解】NSMutableArray基本用法
  3. 【理解】NSMutableArray 错误用法

1.NSMutableArray介绍

  • 什么是NSMutableArray
    • NSMutableArray是NSArray的子类
    • NSArray是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素
    • NSMutableArray是可变的,随时可以往里面添加\更改\删除元素

2.NSMutableArray基本用法

  • 创建空数组
NSMutableArray *arr = [NSMutableArray array];
  • 创建数组,并且指定长度为5,此时也是空数组
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];
  • 创建一个数组,包含两个元素
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];
  • 调用对象方法创建数组
NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];
  • - (void)addObject:(id)object;

    • 添加一个元素
  • - (void)addObjectsFromArray:(NSArray *)array;

    • 添加otherArray的全部元素到当前数组中
  • - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

    • 在index位置插入一个元素
  • - (void)removeLastObject;

    • 删除最后一个元素
  • - (void)removeAllObjects;

    • 删除所有的元素
  • - (void)removeObjectAtIndex:(NSUInteger)index;

    • 删除index位置的元素
  • - (void)removeObject:(id)object;

    • 删除特定的元素
  • - (void)removeObjectsInRange:(NSRange)range;

    • 删除range范围内的所有元素
  • - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

    • 用anObject替换index位置对应的元素
  • - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

    • 交换idx1和idx2位置的元素

3.NSMutableArray 错误用法

  • 不可以使用@[]创建可变数组
NSMutableArray *array = @[@"lnj", @"lmj", @"jjj"];
// 报错, 本质还是不可变数组
[array addObject:@“Peter”];

 

NSDictionary基本概念

本小节知识点:

  1. 【理解】NSDictionar基本概念
  2. 【理解】NSDictionary的创建
  3. 【理解】NSDictionary的遍历
  4. 【理解】NSDictionary文件操作

1.NSDictionar基本概念

  • 什么是NSDictionary
    • NSDictionary翻译过来叫做”字典”
    • 日常生活中,“字典”的作用:通过一个拼音或者汉字,就能找到对应的详细解释
    • NSDictionary的作用类似:通过一个key,就能找到对应的value
    • NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改

2.NSDictionary的创建

+ (instancetype)dictionary;
+ (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;
+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
+ (id)dictionaryWithContentsOfFile:(NSString *)path;
+ (id)dictionaryWithContentsOfURL:(NSURL *)url;
  • NSDictionary创建简写

    • 以前 objc NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @"12345678", @"phone", @"天朝", @"address", nil];
    • 现在 objc NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
  • NSDictionary获取元素简写

    • 以前 objc [dict objectForKey:@"name”];
    • 现在 objc dict[@"name”];
  • 键值对集合的特点

    • 字典存储的时候,必须是"键值对"的方式来存储(同时键不要重复)
    • 键值对中存储的数据是"无序的".
    • 键值对集合可以根据键, 快速获取数据.

3.NSDictionary的遍历

  • - (NSUInteger)count;

    • 返回字典的键值对数目
  • - (id)objectForKey:(id)aKey;

    • 根据key取出value
  • 快速遍历

    NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
    for (NSString *key in dict) {
        NSLog(@"key = %@, value = %@", key, dict[key]);
    }
  • Block遍历
    [dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *obj, BOOL *stop) {
        NSLog(@"key = %@, value = %@", key, obj);
    }];

4.NSDictionary文件操作

  • 将字典写入文件中

    • - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
    • - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
    • 存结果是xml文件格式,但苹果官方推荐为plist后缀。
  • 示例

    NSDictionary *dict = @{@"name":@"lnj", @"phone":@"12345678", @"address":@"天朝"};
    BOOL flag = [dict writeToFile:@"/Users/LNJ/Desktop/dict.plist" atomically:YES];
    NSLog(@"flag = %i", flag);
  • 从文件中读取字典
NSDictionary *newDict = [NSDictionary dictionaryWithContentsOfFile:@"/Users/LNJ/Desktop/dict.plist"];
    NSLog(@"newDict = %@", newDict);

 

NSMutableDictionary基本概念

本小节知识点:

  1. 【理解】NSMutableDictionary 基本概念
  2. 【理解】NSMutableDictionary 常用方法
  3. 【理解】NSMutableDictionary 简写
  4. 【理解】NSDictionary和NSArray对比

1.NSMutableDictionary 基本概念

  • 什么是NSMutableDictionary
    • NSMutableDictionary是NSDictionary的子类
    • NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素, 也不能再往里面添加元素
    • NSMutableDictionary是可变的,随时可以往里面添加\更改\删除元素

2.NSMutableDictionary的常见操作

  • - (void)setObject:(id)anObject forKey:(id )aKey;

    • 添加一个键值对(会把aKey之前对应的值给替换掉)
  • - (void)removeObjectForKey:(id)aKey;

    • 通过aKey删除对应的value
  • - (void)removeAllObjects;

    • 删除所有的键值对

3.NSMutableDictionary的简写

  • 设置键值对
    • 以前 objc [dict setObject:@"Jack" forKey:@"name”];
    • 现在 objc dict[@"name"] = @"Jack";

4.NSDictionary和NSArray对比

  • NSArray和NSDictionary的区别

    • NSArray是有序的,NSDictionary是无序的
    • NSArray是通过下标访问元素,NSDictionary是通过key访问元素
  • NSArray的用法

    • 创建 objc @[@"Jack", @"Rose"] (返回是不可变数组)
    • 访问 objc id d = array[1];
    • 赋值 objc array[1] = @"jack";
  • NSDictionary的用法 +创建 objc @{ @"name" : @"Jack", @"phone" : @"10086" } (返回是不可变字典)

    • 访问 objc id d = dict[@"name"];
    • 赋值 objc dict[@"name"] = @"jack";

 

常见的结构体

本小节知识点:

  1. 【理解】NSPoint和CGPoint
  2. 【理解】NSSize和CGSize
  3. 【理解】NSRect和CGRect
  4. 【理解】常见的结构体使用注意

1.NSPoint和CGPoint

  • CGPoint和NSPoint是同义的
typedef CGPoint NSPoint;

CGPoint的定义
struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;
typedef double CGFloat;
  • CGPoint代表的是二维平面中的一个点
    • 可以使用CGPointMake和NSMakePoint函数创建CGPoint

2.NSSize和CGSize

  • CGSize和NSSize是同义的
typedef CGSize NSSize;

CGSize的定义
struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;
  • CGSize代表的是二维平面中的某个物体的尺寸(宽度和高度)
    • 可以使用CGSizeMake和NSMakeSize函数创建CGSize

3.NSRect和CGRect

  • CGRect和NSRect是同义的
typedef CGRect NSRect;

CGRect的定义
struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;
  • CGRect代表的是二维平面中的某个物体的位置和尺寸
    • 可以使用CGRectMake和NSMakeRect函数创建CGRect

4.常见的结构体使用注意

  • 苹果官方推荐使用CG开头的:
    • CGPoint
    • CGSize
    • CGRect

     

OC基础(24)

标签:

原文地址:http://www.cnblogs.com/zhoudaquan/p/5017747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!