Object-oc之字面量

标签: 字面量
538人阅读 评论(0) 收藏 举报

使用oc时,经常会用到NSString,NSNumber,NSArray,NSDictionary,下面是关于他们的字面量语法的使用。

(1)字面数值

   有时需要把整数,浮点数,布尔值封入oc对象中

      一般写法:

    NSNumber *num = [NSNumber numberWithInt:1];

    使用字面量语法:

    NSNumber *num = @1;

   其他类型使用字面量语法:

   NSNumber *intNumber=@2;

   NSNumber *floatNumber=@2.5f;

   NSNumber *doubleNumber=@3.141592;

   NSNumber *boolNumber=@YES;

   NSNumber *charNumber=@‘a‘;

   字面量也适用于以下表达式:

   int x=5;

   float y =6.15f;

   NSNumber *z=@(x*y);

   (2)字面量数组

   一般写法:

   NSArray *animals=[NSArray arrayWithObject:@"cat",@"dog",@"mouse",nil];

   使用字面量语法:

   NSArray *animals=@[@"cat",@"dog",@"mouse"];

   数组的操作

   一般写法:

   NSString *dog=[animals objectAtIndex:1];

   使用字面量:

   NSString *dog=animals[1];

   (3)字面量字典

   一般写法:

  NSDictionary *personData=[NSDictionarydictionaryWithObjectsAndKeys:@"Matt",@"firstName",@"Galloway",@"lastName",[NSNumber numberWithInt:28],@"age",nil];

  使用字面量:

  NSDictionary *personData=@{@"firstName":@"Matt",@"lastName":@"Galloway",@"age":@28};

  字典的操作

  一般写法:

  NSString *lastName=[personData objectForKey:@"lastName"];

  使用字面量:

  NSString *lastName=personData[@"lastName"];

(4)可变数组与字典

  通过取下标操作,可以访问数组中某个下标或字典中某个键所对应的元素。如果数组与字典对象是可变的,那么也能通过下标修改其中的元素值。

 一般写法:

[mutableArray replaceObjectAtIndex:1 withObject:@"dog"];

[mutableDictionary setObject:@"Galloway" forKey:@"lastName"];

使用字面量:

mutableArray[1]=@"dog";

mutableDictionary[@"lastName"]=@"Galloway";




未使用字面量 

使用字面量 

NSString *greeting = [NSString stringWithUTF8String:"Hello  World"]; NSString   *greeting = @"Hello World";
NSNumber *number; NSNumber  *number;
number = [NSNumber numberWithChar:'X']; number  = @'X';
number = [NSNumber numberWithInt:12345]; number  = @12345;
number = [NSNumber numberWithUnsignedLong:12345ul]; number  = @12345ul;
number = [NSNumber numberWithLongLong:12345ll]; number  = @12345ll;
number = [NSNumber numberWithFloat:123.45f]; number  = @123.45f;
number = [NSNumber numberWithDouble:123.45]; number  = @123.45;
number = [NSNumber numberWithBool:YES]; number  = @YES;
[NSNumber numberWithint:6 + x * 2012] @(6+x*2012)
NSNumber *piOverSixteen = [NSNumber numberWithDouble: (M_PI /  16)]; NSNumber  *piOverSixteen = @( M_PI / 16 );
NSNumber *hexDigit = [NSNumber  numberWithChar:"0123456789ABCDEF"[i % 16]];NSNumber *hexDigit = @(  "0123456789ABCDEF"[i % 16] ); NSNumber  *hexDigit = @( "0123456789ABCDEF"[i % 16] );
NSNumber *usesScreenFonts = [NSNumber  numberWithBool:[NSLayoutManager usesScreenFonts]]; NSNumber  *usesScreenFonts = @( [NSLayoutManager usesScreenFonts] );
NSNumber *writingDirection = [NSNumber  numberWithInt:NSWritingDirectionLeftToRight]; NSNumber  *writingDirection = @( NSWritingDirectionLeftToRight );
NSNumber *path = [NSString stringWithUTF8String:  getenv("PATH")]; NSNumber  *path = @( getenv("PATH") );
array = [NSArray arrayWithObjects:a, b, c, nil]; array  = @[ a, b, c ];
[array objectAtIndex:1] array[1]
dict = [NSDictionary dictionaryWithObjects:@[o1, o2, o3]   forKeys:@[k1, k2, k3]]; dict  = @{ k1 : o1, k2 : o2, k3 : o3 };
[NSDictionary dictionaryWithObjectsAndKeys: v1, k1, v2, k2,  nil]; @{k1:v1,  k2:v2}
[dictionary valueForKey:k] dictionary[k]

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
      个人说明

      以梦为马 不负韶华!


      - The king of Kings.


      人生伟业的建立,不在能知,乃在能行。


      青春不老,奋斗不止。
    个人资料
    • 访问:950061次
    • 积分:12655
    • 等级:
    • 排名:第1138名
    • 原创:330篇
    • 转载:66篇
    • 译文:15篇
    • 评论:411条
      技术地址
      微信公众号
      微信号
      QQ号
    博客专栏