//------------------------------------------------
//可变的字典 NSMutableDictionary
//第一种定义方式 返回一个空的字典
NSMutableDictionary *mutableDict1 = [NSMutableDictionary dictionary];
//第二种定义方式 返回一个空的字典 并且创建一个初始的存储空间
NSMutableDictionary *mutableDict2= [[NSMutableDictionary alloc]initWithCapacity:10];
//第三种定义方式 返回一个字典 里面包含里了一个已创建过的不可变的字典集合
//返回数组集合里面包含字典里的所有的Key数据
NSArray *array1 = [mutableDict2 allKeys];
//利用Key数组的有序性,返回字典里的Value
for( int i = 0 ; i < [mutableDict2 count]; i++ ){
NSLog(@"key: %@, value: %@",array[i], mutableDict2[array1[i]]);
}
//---------------枚举-----------------
//swift 语言中的三大语言类型 enum struct class
//定义
//c的枚举
enum name {
age = 10,
score = 90
};
//typedef 定义类型的别名 再枚举不允许重复定义
typedef enum
{
scoreI = 80
}name1;
//OC的枚举 常用枚举:是一个抽象类,它能枚举的形式把例如数组和字典等集合列举出来
//例如列举字典 一般只能列举出来字典的键
NSDictionary *dictIII = @{@"1-1":@"name",@"1-2":@"age",@"1-3":@"score"};
//返回的是一个集合里的枚举数据
NSEnumerator *enumerator = [dictIII objectEnumerator];
id dictI ;
//返回集合的下一个对象 列举
while (dictI = [enumerator nextObject]) {
NSLog(@"%@",dictI);
}
//-----------结构体-------------
//C的结构体
//申明一个结构体,设置结构体里的属性
//注意:结构体不能在初始赋值
struct structI{
//NSString *name;
};
//注意:在OC的ARC(自动引用计数)的情况下,不能设置结构体属性
//struct structI structII= { .name = @"jack" };
//NSLog(@"structII name: %@", structII.name );
//OC的常用结构体:NSRange 、NSRect 、NSPoint 、NSSize
//结构体一般不需要指针表示
//1.NSRange: 一般用于描述一个范围,通常用于字符串、对象查找
//location: 起始位置 ,length: 长度
NSString *string = @"1234567890";
NSRange rangeII = NSMakeRange( 8, 2 );
//通过字符串返回范围
NSRange rangeI = [ string rangeOfString:@"90"];
//通过范围返回字符串
NSLog(@"%@", [string substringWithRange:rangeII]);
NSLog(@"location: %li, length: %li", rangeI.location, rangeI.length );
//2.NSPoint 用于描述一个坐标 x,y
NSPoint pointI = NSMakePoint( 3.4, 1.2 );
CGPoint pointII = NSMakePoint( 3.5, 1.3 );
NSLog(@"x:%.2f, y: %.2f", pointI.x, pointI.y );
NSLog(@"x:%.2f, y: %.2f", pointII.x, pointII.y );
//3.NSSize 用于描述一个宽高,width,height
NSSize sizeI = NSMakeSize( 300 , 120 );
CGSize sizeII = NSMakeSize( 300.1 , 120.1 );
NSLog(@"width : %.2f , height: %.2f", sizeI.width, sizeI.height);
NSLog(@"width : %.2f , height: %.2f", sizeII.width, sizeII.height);
//4.NSRect 用户描述一个坐标以及宽高
NSRect rectI = NSMakeRect( 1, 2.1, 100, 200.1);
NSLog(@"x: %.2f , y: %.2f , width: %.2f , height: %.2f",
rectI.origin.x, rectI.origin.y, rectI.size.width, rectI.size.height);
//-----------NSDate------------
//拿到时间
NSDate *date = [[NSDate alloc]init];
有时区差
//需要格式化
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
//设置要格式成什么时间格式
//HH是二十四小时制,hh是十二小时制
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
NSLog(@"%@",[dateFormatter stringFromDate:date]);
//把字符串转换成NSNDate dateFromString
//注意:字符串的格式要和时间格式一样
//---------- NSvalue----------
//定义一个NSValue
NSValue *value = [[NSValue alloc]init];
//作用:结构体不能直接存放到一个数组中,要先转换成NSValue类型,然后再放入到数组中
//常见结构体:NSRange NSPoint NSSize NSRect
//将rect转换成NSValue
NSValue *valueI = [NSValue valueWithRect:rect];
//转换后存入数组
NSArray *array = @[valueI];
NSLog(@"%@",array);