Foundation基础框架2

常用数据类型

  

  范围结构体

    NSRange

      表示相关事物的范围

      字符串的字符范围

      数组的元素范围

    location字段:存放该范围的起始位置

      值NSNotFound:用来表示无意义范围

    length字段:该范围内所含元素的个数

  创建范围结构体

    直接给字段赋值

      表示相关事物的范围

    用C语言的聚合结构赋值机制

    用NSMakeRange()

      好处:可以在任何能够使用函数的地方使用它

  几何数据类型

    点NSPoint

      代表笛卡几平面中一个点

      (xy

      NSMakePoint()

    尺寸 NSSize

      NSMakeSize()

    区域 NSRect

      NSMakeRect()

字符串

  NSString

    标志是双引号内的字符串前的@

  创建字符串

    省略号(…),它告诉我们(和编译器),这个方法可以接收多个以逗号隔开的其他参数

    就像printf()NSLog()一样

 类方法:

  stringWithFormat

    声明方法时添加了加号+,是一个类方法

    是一个工厂方法,提供的参数创建新对象实现协议

    类方法也可以用来访问全局数据

    注意

      我们创建的一般都是实例方法

      声明时,添加减号-

 关于大小:

  NSStringlength:方法

      能够准确无误地处理国际字符串

      如:含有俄文、中文或者日文字符的字符串

      以及使用Unicode国际字符标准的字符串

 比较策略:

  isEqualToString:

    比较接收方和当作参数传递来的字符串

    返回BOOLYESNO)型数据

      表示两个字符串的内容是否相同

      -(BOOL) isEqualToString: (NSString *) aString;

  compare:

    比较接收方和当作参数传递来的字符串

    返回NSComparisonResult型数据

    NSOrderedAscending

    NSOrderedSame

    NSOrderedDescending

  compare:option:

    NSCaseInsensitiveSearch

    NSLiteralSearch

    NSNumericSearch

 字符串内是否还包含别的字符串:

检查字符串是否以另一个字符串开头

  -(BOOL) hasPrefix: (NSString *) aString;

  -(BOOL) hasSuffix: (NSString *) aString;

    判断字符串是否以另一个字符串结尾

使用举例:

NSString *filename = @draft-chapter.pages;

 

If  ([filename hasPrefix: @draft

{

// this is a draft

}

If  ([filename hasSuffix: @.mov

{

//this is a movie

}

  rangeOfString

       -(NSRange) rangeOfString: (NSString *) aString;

    判断字符串内的某处是否包含其他字符串

可变字符串 

  NSString的子类NSMutableString

  创建

capacity

    + (id) stringWithCapacity: (unsigned) capacity;

    这个容量只是给NSMutableString的一个建议

    字符串的大小并不仅限于所提供的容量

这个容量仅是个最优值。

  附加新字符串

  appendString:

    接受参数aString

    然后将其复制到接收对象的末尾

  appendFormat:

    工作方式与stringWithFormat:类似

    但它将格式化的字符串附加在接收字符串的末尾,而不是创建新的字符串对象

  Eg

-(void) appendString: (NSString *) aString;

-(void) appendFormat: (NSString *)format,;

  

集合

  不可变数组

  NSArray

    存储对象的有序列

    可以在NSArray中放入任意类型的对象

      NSStringCarShapeTire

      或其要存储的对象表

  两个限制

    只能存OC的对象,而不能存C语言中的基本数据类型

      如:intfloatenumstructNSArray中随机指针

    不能存储nil(对象的零值或NULL值)

  创建一个新的NSArray

      arrayWithObjects

  可变数组

  NSMutableArray

    可变数组

    可以随意地添加和删除数组中的对象

  创建一个新的可变数组

arrayWithCapacity

  + (id) arrayWithCapacity: (unsigned) numltems:

   addObject:在数组末尾添加对象

   removeObjectAtIndex:删除对象

  枚举

   NSEnumerator

   objectEnumerator:

      -(NSEnumerator *) objectEnumerator;

    向数组请求枚举器

   reverseObjectEnumerator

NSEnumerator *enumerator;

enumerator = [array objectEnumerator];

 

id thingie;

while (thingie = [enumerator nextObject]) 

{

NSLog (@I found %@,thingie);

}

    从后向前浏览集合

   nextObject:下一个对象

  快速枚举

    这个循环体将会遍历数组中的每个元素

    并且用变量string存储每个数组值

  

      for (NSString *string in array) 

      {

         NSLog (@I found %@, string);

      }

  字典

    NSDictionary 

      是关键字及其定义的集合

      在给定的关键字(通常是一个NSString字符串)下,存储一个数值(可以是任何类型的对象)

      可以用这个关键字来查找相应的数值

    dictionaryWithObjectsAndKeys

      创建字典

      接受对象和关键字交替存储系列,以nil值作为终止符

    + (id) dictionaryWithObjectsAndKeys: (id) firstObjext,;

  可变字典

 NSMutableDictionarydictionaryWithCapacity

创建新的可变字典

    并指定一个建议大小

    + (id) dictionaryWithCapacity: (unsigned int) numltems;

  setObjectforKey

    给字典添加元素,如关键字已存在则替换原有的值

    -(void) setObject: (id) anObject forkey: (id) aKey;

    removeObjectForKey:

    删除指定的元素

各种数值

  NSNumber

    包装基本数据类型

    以对象形式实现

    把简单数据类型封装成一个对象

  创建新的NSNumber对象的类方法:

    +NSNumber *numberWithChar: (char) value;

    +NSNumber *numberWithInt:(int)value;

    +NSNumber *numberWithFloat: (float) value;

    +NSNumber *numberWithBool: (BOOL) value;

  NSValue

    NSNumberNSValue的子类

    可以包装任意值

    可用NSValue将结构放入NSArrayNSDictionary

    +NSValue *valueWithBytes:(const void *value

             objCType:const char  *type;

  创建新的NSValue对象的类方法:

    传递的参数是你想要包装的数值的地址

      如一个NSSize或你自己的struct

    通常,得到的是想要存储的变量的地址

      在C语言中使用操作符&

  NSNull

    表示“这里什么都没有”的值

Cocoa里最简单的类了,它只有一个方法

+NSNull  *null

  添加到集合中:

     [contact  setObject: [NSNull  null ]  forKey: @” home fax machine ];

  访问它的方法如下:

    id homefax;

    homefax = [contact objectForKey: @” home fax machine ];

     

    if homefax = = [NSNull null ]

    {

             // . . .  no fax machine .  rats.

    }

Foundation框架介绍

  cocoa程序编写主要用到2个框架FoundationApplicationKitUIKit)。其中Foundation框架主要定义了一些基础类,供程序员来使用,而Application kit主要是一些用户界面设计的类,用于Mac开发使用此库。Foundation框架中的所有类都继承自NSObject这个对象。

数字对象常用处理方法

  数字对象的初始化

    //  类⽅方法创建数字对象

    int  number  =  10;

    NSNumber  *intNumber  =  [NSNumber  numberWithInt:number];

BOOL  isBool  =  YES;

NSNumber  *boolNumber  =  [NSNumber  numberWithBool:isBool];

//  实例方法创建数字对象

float  pi  =  3.14;

NSNumber  *piNumber  =  [[NSNumber  alloc]  initWithFloat:pi];

char  character  =  'a';

NSNumber  *cNumber  =  [[NSNumber  alloc]  initWithChar:character];

  数字对象的转换

//  还原成基本数据类型

int  month  =  [intNumber  intValue];

BOOL  isOpen  =  [boolNumber  boolValue];

float  length  =  [piNumber  floatValue];

char  firstName  =  [cNumber  charValue];

字符串对象常用处理方法

  在Foundation框架中,提供了NSString类,用于处理字符串对象。在c语言中字符串在一对引号中表示。OCC语言的一种延展,换句话说,OC语言是建立在C语言的基础之上的(C的基础之上添加了面向对象的内容,smalltalk语言)。因此,为了区别两者的字符串,OC语言的字符串必须以@开头,引号当中则是字符串的内容,如@abc”。此外,NSString对象,一旦被创建,就不可以再修改。如若需要一个可以更改的字符串对象,需要创建NSMutableString实例。

  字符串的创建

创建一个字符串常量

NSString  *string  =  @"这是一个字符串常量";

创建一个空的字符串

NSString  *string  =  [[NSString  alloc]  init];

NSString  *string  =  [NSString  string];

快速创建一个字符串

NSString  *string  =  [[NSString  alloc]  initWithString:@"快速创建字符串"];

NSString  *string  =  [NSString  stringWithString:@"快速创建一个字符串"];

快速创建一个格式化字符串

int  number  =  2;

NSString  *string  =  [[NSString  alloc]  initWithFormat:@"%d",  number];

float  number  =  2.4;

NSString  *string  =  [NSString  stringWithFormat:@"浮点数%f",  number];

比较字符串

测试字符串内容是否相同

NSString  *string1  =  [[NSString  alloc]  initWithFormat:@"test"];

NSString  *string2  =  [[NSString  alloc]  initWithFormat:@"test"];

if  ([string1  isEqualToString:string2])  {

}

测试字符串是否为同一个对象

NSString  *string1  =  [[NSString  alloc]  initWithFormat:@"test"];

NSString  *string2  =  [[NSString  alloc]  initWithFormat:@"test"];

if  (string1  ==  string2)  {

    NSLog(@"测试连个字符串是否为同一个对象");

}

比较字符串的大小

NSString  *string1  =  [[NSString  alloc]  initWithFormat:@"a"];

NSString  *string2  =  [[NSString  alloc]  initWithFormat:@"b"];

NSLog(@"[string1  caseInsensitiveCompare:string2]  :  %ld",  [string1

caseInsensitiveCompare:string2]);

求字符串的长度

NSString *string = [[NSString alloc] initWithFormat:@”string length”];

NSUInteger *length = [string length];

字符串的转换

改变字符串大小写

NSString *hello = @”hellow WORLD”;

NSLog(@”%@”,[hellow uppercaseString]);//全部大写

NSLog(@”%@”,[hellow lowercaseString]);//全部小写

NSLog(@”%@”,[hellow capitalizadString]);//首字母大写

将字符串转换成基本数据类型

NSString *string = @”2.467”;

NSLog(@”%d”,[string boolValue]);//转换成BOOL类型

NSLog(@”%f”,[string floatValue]);//转换成浮点型

NSLog(@”%f”,[string doubleValue]);//转换成双精度型

NSLog(@”%d”,[string intValue]);//转换成整型

将字符串转换为数组

NSString  *string  =  @"One  Two  Three  Four";

NSArray  *array  =  [string  componentsSeparatedByString:@"  "];

字符串的截取与拼接

截取字符串

NSString  *string  =  [NSString  stringWithFormat:@"abcdef"];

//  从字符串的开头一直截取到指定的位置,但不包括该位置的字符

NSString  *string1  =  [string  substringToIndex:2];

//  以指定位置开始(包括指定位置的字符),并包括之后的全部字符

NSString  *string2  =  [string  substringFromIndex:2];

根据范围截取字符串

NSRange  rang;

rang.location  =  2;

rang.length  =  2;

NSString  *string3  =  [string  substringWithRange:rang];

拼接字符串

NSString  *str1  =  @"1",  *str2  =  @"2";

NSString  *string  =  [[NSString  alloc]  initWithFormat:@"这是拼接:%@  and  %@",  str1,  str2];

NSString  *string1  =  [str1  stringByAppendingFormat:@"%@",  str2];

NSString  *string2  =  [str1  stringByAppendingString:str2];

查询字符串

NSString  *link  =  @"asdastarget=_blankddasd";

NSRange  range  =  [link  rangeOfString:@"target=_blank"];

if(range.location  !=  NSNotFound)

{

      NSLog(@"string  找到了");

可变字符串——NSMutableString,它继承自NSString

插入字符串

NSMutableString  *str  =  [NSMutableString  stringWithString:@"字符串"];

[str  insertString:@"可变"  atIndex:0];

删除字符串

NSMutableString  *str  =  [NSMutableString  stringWithString:@"字符符串"];

[str  deleteCharactersInRange:NSMakeRange(1,  2)];

替换字符串

NSMutableString  *str  =  [NSMutableString  stringWithString:@"字符串"];

[str  replaceCharactersInRange:NSMakeRange(0,  2)  withString:@"羊肉"];

数组对象常用处理方法

Foundation中的数组(NSArrayNSMutableArray)是一组有序的对象集合,通过索引下标获取到数组中的各个元素。与字符串相同,数组也有可变和不可变数组之分。此外,数组中不可以存放基本数据类型,只能存放类的实例(对象)。如若需要将基本数据类型、结构体放入数组中,需要通过NSNumberNSValue进行数据的“封装”。

不可变数组——NSArray

字典和集合对象常用处理方法

Foundation中的字典(NSDictionaryNSMutableDictionary)是由键—值对组成的数据集合。正如,我们在字典里查找单词的定义一样。通过key(键),查找对应value(值),key通常是字符串对象,也可以是其他任意类型对象。在一个字典对象中,key的值必须是唯一的。此外,字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。

不可变字典——NSDictionary

可变字典——NSMutableDictionary继承自NSDictionary

集合的基本概念

Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个,并且它也分为可变和不可变的集合对象(可变集合对象,NSMutableSet)。

不可变集合——NSSet

可变集合——NSMutableSet,它继承自NSSet

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值