随笔之IOS常用数据类型

来源:互联网 发布:数据可视化案例 编辑:程序博客网 时间:2024/05/29 18:21

参考书籍:Objective-C基础教程

不喜欢看书,里面字太多了。所以看一次之后把自己想记的东西整理出来。

关于结构体:

NSRange,表示事物相相关范围

定义

typedef struct _NSRange{unsigned int location;//起始位置unsigned int length;//该范围内的个数,或者说是包含的个数}NSRange;

 

创建方式

1,直接赋值

NSRange range;range.location=17;range.length=14;

2.用C的聚合机制复制

NSRange range={17,4}  

3.用Cocoa函数

NSRange range = NSMakeRange(17,4);


其他结构体还有
NSPoint表示平面的一个点

typedef struct _NSPoint{ float x; float y;} NSPoint;


NSSize表示长宽;

typedef struct _NSSize{ float width; float height;} NSSize;


NSRange表示一个矩形

typedef struct _NSRect{ NSPoint origin; NSSize size;}NSRect

 

关于字符串。

Cocoa中用来处理字符串的类是NSString。
1)创建方式

NSString *name = @"hello";//直接赋值

NSString *age = [NSString stringWithFormat:@"age is %i",12]//用 stringWithFormat函数格式化。后面可以带任意多个参数

2)length 方法。可以算出字符个数
name length];//结果是5


3)比较的方式
isEqualString:比较两个字符串的类容是否相同。

== : 比较指针,看是否同一个对象

compare :比较大小,返回结果用枚举类型表示。NSOrderedAscending(左侧的数据比右侧的小),NSOrderedSame,NSOrderedDescending
4)NSString是不可变的,但是可以操作它来生成新的字符串。想改表它的字符是不行的。所以出现了
NSMutableString可变的字符串类。可以通过
appendString 和 appendFormat来添加新的字符串。

关于数组。

NSArrary
可以用类方法arrayWithObjects创建。
NSArray *arr = [NSArray arrayWithObjexts:@"A",@"B",@"C",nil];//nil代表结束。
NSMutableArray代表可变数组,addObject可以添加对象到尾巴上,removeObjectAtIndex删除指定索引的对象。

关于字典

NSDictionary和NSMutableDictionary。

NSDictionary可以使用dictionaryWithObjectsAndKeys:来创建。
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:name,@"cat", age,@"18"];
NSMutableDictionary可创建之后动态添加。
NSMutableDictionary *dics = [NSMutableDictionary dictionary];
[dics setObject:name forKey:@"cat"];

。。。

 

关于基本类型
OC没有自动装箱功能,而NSArray和NSDictionary只能存储对象,那么对于基本数据类型int,float或结构体struct。怎么办?自己包装!
NSValue:包装任意值。

NSRect rect = NSMakeRect(0,0,10,10);NSValue *value = [NSValue valueWithBytes:&rect objcType:@encode(NSRect)]//第一个参数是要被封装的数据的地址,第二个参数@encode编译器指令可以接受数据类型的名称并为之生成合适的字符串。[array addObject:value];



常用的struct类型转成NSValue方法:
装箱
+(NSValue *) valueWIthPoint:(NSPoint) point;
+(NSValue *) valueWIthSize:(NSSize) size;
+(NSValue *) valueWIthRect:(NSRect) rect;
取消装箱</P>
-(NSPoint) pointValue;
-(NSSzie) sizeValue;
-(NSRect) rectValue;

NSNumber:包装基本数据类型,NSValue的子类,常用的几个方法
numberWithChar:
numberWithInt:
numberWithFloat:
取消装箱
charValue,intValue,floatValue

 

原创粉丝点击