objective-c 基本类型和对象类型解读

     我将用最简单的话来描述我所理解的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对象 ,指定对象类型进行遍历:
NSArray *myArray=@[@"a",@"b",@"c"];
for (NSString * string in myArray)  {

NSLog (@"NSString:%@",string);

}   

  • 假设数组中存有不同类型的对象,先将对象类型视为ID类型,在对ID进行操作时,再判断对象具体类型:
  for (id obj in myArray){

               //先判断它是NSString类型的对象

if ([obj isKindOfClass:[NSString class]])

//对NSString类型的对象进行方法调用

int value=[obj intValue];

                      }


       (4)NSDictonary 字典与NSMutableDictionary

  • 字典里面的数据是key-value一对一出现的,key就是一个字符串,value是一个对象。所以也可以称为key-object.
NSDictionary方法:
  • -(id)objectForKey:(id)key;
NSMutableDictionary方法:
  • 添加一对key-object:  -(void)setObject:(id)anObject   forKey:(id)key;
  • 删除一对key-object:  -(void)removeObjectForKey:(id)key;
  • 删除字典里所有的object:  -(void)removeAllObjects;
遍历字典中的对象:

  • NSDictionary *myDictionay=@{ ....};
for(id key in myDictionary){
//通过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又是以数组方式存在的,这就是"字典套数组"结构。

           通俗的讲,再复杂的数据结构,无非是"数组中套着字典,字典中套着数组".

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值