我将用最简单的话来描述我所理解的oc数据类型。
1.基本类型(primitive type)
(1) 常用数据类型 int / float /long / Boolen /NSInteger
(2)原生数据类型,直接存在栈上,不会有*。
2.对象类型(object type)
对应的是一个对象,即object=Data+method,这个对象既有属性也有方法,所以无法直接赋值,所以前面的*必不可少。并且对象在使用时,必须初始化。
(1)NSString 字符串
最常用的属性和方法:
- 直接赋值:NSString *myString=@"Yang";
- 多个字符串拼接:NSString *myString=[otherString stringByAppendingString:second string];
- 创建格式化字符串:NSString *myString=[NSString stringWithFormat:@"%d%@",myInt,myObject];
- 判断字符串是否相等:[strA isEqualToString: strB];
(2)NSNumber 数字
(3)NSArray 数组(有序的对象集合)与NSMutableArray
NSArray主要方法:
- 计算数组对象个数:-(NSInteger)count;
- 获取数组指定下表对象:-(id)objectAtIndex:(NSUinteger)index;
- 获取数组中第一个对象:-(id)firstObject;
- 获取数组中最后一个对象:-(id)lastObject;
NSMutableArray主要方法:
- 继承NSArray所有方法;
- 在可变数组末端添加一个对象 :-(void)addObject:(id)object;
- 在可变数组指定的索引位置添加一个对象:- (void) insertObject:(id)object atIndex:(NSUInteger)index;
- 在可变数组指定的位置,删除一个对象 - (void) removeObjectAtIndext:(NSUInteger)index;
- 假设事先知道数组中对象是NSString对象 ,指定对象类型进行遍历:
for (NSString * string in myArray) {
NSLog (@"NSString:%@",string);
}
- 假设数组中存有不同类型的对象,先将对象类型视为ID类型,在对ID进行操作时,再判断对象具体类型:
//先判断它是NSString类型的对象
if ([obj isKindOfClass:[NSString class]])
//对NSString类型的对象进行方法调用
int value=[obj intValue];
}
(4)NSDictonary 字典与NSMutableDictionary
- 字典里面的数据是key-value一对一出现的,key就是一个字符串,value是一个对象。所以也可以称为key-object.
- -(id)objectForKey:(id)key;
- 添加一对key-object: -(void)setObject:(id)anObject forKey:(id)key;
- 删除一对key-object: -(void)removeObjectForKey:(id)key;
- 删除字典里所有的object: -(void)removeAllObjects;
- NSDictionary *myDictionay=@{ ....};
//通过key,获取到相应的value
id value=[myDictionary objectForKey:key];
//接下里就可以对value进行操作了
}
3.对象类型和基本数据类型转换
(1)基本转对象 NSNumber *intNumber=[NSNumber numberWithInt:100];
NSNumber类方法:+(NSNumber*)numberWithChar / Int / Float / Bool:(char/ Int / Float / Bool)value;
(2) 对象转基本 int a = [intNumber intValue];
int b=[NSString integerValue];
总结:在IOS开发中,离不开NSArray和NSDictionary.这个数组不是传统语言数组,它只能存储对象,不能存储简单数据类型。数组也好字典也罢,它们都是一个对象,而且也都可以存储多个对象的容器。既然如此,在数组中可以套字典,在字典中也可以套数组。
举个例子,一个TableView是由多个cell组成的,为创建一个高效的数据结构,用数组最合适不过了。TableView的行,正好对应数组的下表;而每一个cell又是由多个对象组成(如缩略图、主标题、副标题等),将每个cell对应的数据存成一个字典,是一个不错的数据存储结构。这么说来,数据套字典对TableView最合适不过了。
常用的plist文件,就是一个典型的字典数据结构。字典是key-object结构,而这里的object又是以数组方式存在的,这就是"字典套数组"结构。
通俗的讲,再复杂的数据结构,无非是"数组中套着字典,字典中套着数组".