Foundation kit介绍

(一)结构:

AppKit      UIKit

     Foundation(OC,NS*)

  core Foundation(C,CF*)


(二)数据类型:

1.NSRange:

1.1定义:

typedef struct _NSRange

{

unsigned int location;

unsigned int length;

}NSRange;


1.2用途:

表示事物的范围。location从1开始数,length表示个数。a.字符串里的字符范围。b.数组里的元素范围。


1.3:初始化:

a.NSRange range = {17,4};

b.NSRange range;

   range.location = 17;

   range.length = 4;

c.快捷方式:NSRange range = NSMakeRange(17,4);


2.几何数据类型:以CG开头,来自Core Graphics(C语言实现,用于2d渲染)

struct CGPoint

{

float x;

float y;

} ;//笛卡尔平面中的一个坐标,快捷方式CGPointMake()


struct CGSize

{

float width;

float height;

};//存储长宽,快捷方式CGSizeMake()


struct CGRect

{

CGPoint origin;//起始点

CGSize size;//长宽

};//矩形,快捷方式CGRectMake()


3.字符串

3.1 创建字符串:+ (id) stringWithFormat:(NSString*)format,...;//类方法,工厂方法

NSString* height = [NSString stringWithFormat:@"Your height is %d feet,%d inches",5,11];


3.2长度:-(NSUInteger)length;//实例方法

NSUInteger length = [height length];


3.3字符串比较

//是否相等

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

不能用==,因为==只是判断指针值,并不判断指针指向的内容是否相同。


//大小比较

- (NSComparisonResult) compare:(NSString*)aString;

enum

{

NSOrderedAscending = -1,

NSOrderedSame,

NSOrderedDescending

};

typedef NSInteger NSComparisonResult;


//不区分大小写的比较

- (NSComparisonResult) compare:  (NSString*)aString

options: (NSComparisonOptions) mask;


掩码如下,可以位运算

NSCaseInsentiveSearch:不区分大小写字符

NSLiteralSearch:进行完全比较,区分大小写

NSNumericSearch:比较字符串的的字符个数,而不是字符串值。


//字符串内是否还包括别的字符串

- (BOOL) hasPrefix: (NSString*) aString;//是否以某个字符串开头

- (BOOL) hasSuffix: (NSString*) aString;//是否以某个字符串结尾

- (NSRange) rangeOfString: (NSString*)aString;//是否包含某个字符串。如果没有找到,range.location=NSNotFound


//可变性

 NSString 一旦创建,便不能改变。你只能进行比较,查找等,但是不能以删除字符或者添加字符等方式改变它。

NSMutableString,它继承自NSString,它是可变的。

+(id)stringWithCapacity:(NSUInteger)capacity;

示例如下:

NSMutableString* string = [NSMutableString stringWithCapacity: 42];

-(void)appendString: (NSString*)aString;//连接字符串 [string appendString: @"hello"];

-(void)appendFormat:(NSString*)format,...;//连接格式化字符串 [string appendFormat: @"human%d",10]

-(void)deleteCharactersInRange: (NSRange)aRange;//删除字符串中的字符。


4.集合:只能存储对象,不能存储基本类型数据如int,float和struct等

4.1 NSArray

NSArray是一个cocoa类,用来存储对象的有序列表。你可以在NSArray中放入任意类型的对象:NSString,Car,Shape,Tire,甚至是其它数组或者字典对象。

限制:NSArray职能存储object-c对象而不能存储c对象(int,float,struct等),同时你也不能在NSArray中存储nil

//创建NSArray

NSArray* array = [NSArray arrayWithObjects:@"one",@"two",nil];

NSArray* array2 = @[@"one",@"two"];


//对象个数

-(NSUInteger)count;


//获取特定索引处的对象

-(id)objectAtIndex:(NSUInteger)index;

array[index]


4.2可变数组NSMutableArray

//初始化:没有字面量初始化方法

+(id)arrayWithCapacity:(NSUInteger) numItems;


//添加

-(void)addObject:(id)anObject;//添加一个对象

-(void)removeObjectAtIndex:(NSUInteger)index;//删除特定索引处的对象, 索引从0开始


4.2枚举

NSEnumerator* enumerator = [array objectEnumerator];

while(id thingie = [enumerator nextObject])

{

NSLog(@"I found %@",thingie);

}

//注

1.nextObjext为nil时会跳出循环,这就是为什么不能在数组里存储nil的原因,因为不知道nil是结束标示还是数组元素。

2.在枚举的过程中不能添加或者删除对象来操作数组,因为会导致枚举器混乱


4.3 快速枚举


5. 字典

5.1 NSDictionary

//初始化:同样以nil作为结束

+(id)dictionaryWithObjectsAndKeys:(id)firstObject,...;

@{key:value,...}

eg:

Tire* t1 = [Tire new];

Tire* t2 = [Tire new];

Tire* t3 = [Tire new];

Tire* t4 = [Tire new];

NSDictionary* tires = [NSDictionary dictionaryWithObjectsAndKeys:t1,@"first",t2,@"second",t3,@"third",t4,@"fourth"];

NSDictionary* tires = @{@"first",t1,@"second",t2,@"third",t3,@"fourth",t4};


//查找,如果找不到则返回nil

- (id) objectForKey: (id) akey;

tires[key];


5.2 NSMutableDictionary

//初始化:没有字面量初始化方法

+ (id)dictionary;

+ (id)dictionaryWithCapacity: (NSUInteger) numItems;


//增加,如果key已存在,那么值会被替换

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


//删除

-(void) removeObjectForKey:(id)aKey


6.其它数值

因为NSArray和NSDictionary职能存储对象,而不能直接存储任何基本类型的数据。所以如果想用NSArray和NSDictionary处理基本类型的数据,可以把基本类型封装成对象。

6.1 NSNumber

//初始化   获取基本类型值

+ (NSNumber* )numberWithChar: (char)value; -(char) charValue;

+ (NSNumber* )numberWithInt: (int)value; -(int) intValue;

+ (NSNumber* )numberWithFloat: (float)value; -(float) floatValue;

+ (NSNumber* )numberWithBool: (BOOL)value; -(BOOL) boolValue;

-(NSString*)stringValue;

...

NSNumber* number;

number = @'X';//字符型

number = @12345;//整型

number = @YES;//布尔型


6.2 NSValue,NSNumber的基类

//初始化 获取值

+(NSValue*) valueWithBytes:(const void*)value objCType: (const char*)type;//参数为要封装的数据的地址 -(void)getValue:(void*)buffer;


6.3 NSNull ,可以放在集合里

//初始化

+ (NSNull*)null

eg:

jack家里没有电话:

id homePhone = [contact setObject:[NSNull null] forKey: @"home phone"];

查找jack电话:

if(homePhone == [NSNull null])

{

//没有电话的行为定义

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值