NSMutableArray基本概念
本小节知识点:
- 【理解】NSMutableArray介绍
- 【理解】NSMutableArray基本用法
- 【理解】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基本概念
本小节知识点:
- 【理解】NSDictionar基本概念
- 【理解】NSDictionary的创建
- 【理解】NSDictionary的遍历
- 【理解】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基本概念
本小节知识点:
- 【理解】NSMutableDictionary 基本概念
- 【理解】NSMutableDictionary 常用方法
- 【理解】NSMutableDictionary 简写
- 【理解】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";
- 访问
常见的结构体
本小节知识点:
- 【理解】NSPoint和CGPoint
- 【理解】NSSize和CGSize
- 【理解】NSRect和CGRect
- 【理解】常见的结构体使用注意
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
浙公网安备 33010602011771号