表示范围作用的结构体:NSRange: 
     有三种方式创建新的NSRange:

1、NSRange range;
           range.location = 17;
           range.length = 4;
     2、NSRange range = {17 ,4};
     3、NSRange range = NSMakeRange(17,4); (推荐)

表示用来处理几何图形的数据类型:NSPoint(点坐标)和NSSize(长度和宽度)还有一个矩形数据类
型(由点和大小复合而成)NSRect

Cocoa 提供创建这些数据类型方法:

NSMakePoint( )、

NSMakeSize()

NAMakeRect()

表示字符串的类NSString
NSString *heigth =[NSString stringWithFormat : @"You heigth is %d feet,%d inches", 5,11];

创建的类对象包含了指向超类的指针、类名和指向类方法的列表的指针。类对象还包含一个long 的数据, 为新创建的类对象指定大小。
返回字符串中的字符的个数:
unsigned int length = [heigth length];

返回Bool 值的字符串比较函数:
- (BOOL) isEqualToString :(NSString *)aString;//比较两个字符串的内容是否相等

还可以使用compare :方法
-(NSComparisonResult)compare :( NSString *)string;//逐个字符比较

不区分大小写的比较:
-(NSComparisonResult)compare :( NSString *)string options:( unsigned)mask;

注意:NSComparisonResult 是一个枚举值 options 是一个位掩码,即:
NSCaseInsensitiveSearch:不区分大小写
NSLiteralSearch: 进行完全比较,区分大小写
NSNumericSearch: 比较字符串的字符个数,而不是字符值

检查字符串是否以另一个字符串开头
-(BOOL)hasPrefix : (NSString *)aString;

判断字符串是否是以另一个字符串结尾
-(BOOL)hasSuffix : (NSString *)aString;

如果你想知道字符串内的某处是否包含其他字符串,使用rangeOfString : 方法
-(NSRange)rangeOfString :( NSString *)aString;

NSString 是不可变的,NSMutableString 是可变的。用方法stringWithCapacity :来创建 NSMutableString *string = [NSMutableString stringWithCapacity :42];
可以使用appendString :或appendFormat : 来附加新字符串:
- (void) appendString :(NSString *)aString;
- (void) appendFormat :(NSString *)format , . . . ;
可以使用deleteCharactersInRange : 方法删除字符串中的字符
- (void) deleteCharactersInRange : (NSRange)range;

集合家族:
NSArray:用来存储对象的有序列表(任意类型的对象)
限制:只能存储Objective—C 的对象,不能存储C 语言的基本数据类型(int、float、enum、struct、或者NSArray 中的随机指针)。同时也不能存储nil(对象的零值或NULL 值)

//创建一个新的NSArray

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

//获得包含的对象个数
- (unsigned)count;

//获得特定索引处的对象
- (id)objectAtIndex :( unsigned int)index ;

切分数组:
使用componentsSeparatedByString : 来切分NSArray,
NSString *string = @"oop : ack : bork : greeble : ponies" ;
NSArray *chunks = [string componentsSeparatedByString : @":"];

使用componentsJoinedByString : 来合并NSArray 中的元素并创建字符串
string = [chunks componentsJoinedByString :@":-)"] ;

NSArray 是不可变数组,数组中包含的对象是可以改变的,但是数组对象本身是不会改变的。

可变数组NSMutableArray 通过类方法arrayWithCapacity :来创建可变数组
+ (id)arrayWithCapacity :( unsigned)numItems ;
NSMutableArray *array = [NSMutableArray arrayWithCapacity : 17];

使用addObject : 在数组末尾添加对象
- (void)addObject :( id)anObject

删除特定索引的对象
- (void)removeObjectAtIndex :( unsigned)index;

注:可变数组还可以在特定索引处插入对象,替换对象,为数组排序,NSArray 还提供了大量好用的功能。
枚举:
NSEnumerator 用来描述这种集合迭代器运算的方法:
要想使用NSEnumerator,需要通过objectEnumerator 向数组请求枚举器:
- (NSEnumerator *) objectEnumerator;

可以像这样使用这个方法:
NSEnumerator *enumerator;
enumerator = [array objectEnumerator ];

注:若想从后向前枚举集合,使用方法reverseobjectEnumerator ; 也可以使用。
获得枚举器以后,开始while 循环,每次循环都向这个枚举器请求它的nextObject
- (id)nextObject;//返回nil 表明循环结束
注:在枚举的过程中不能改变数组容器。

快速枚举示例:
for(NSString *string in array){
NSLog(@"I found %@", string);
}

数组排序:
例如:一条记录就是一条卡片的信息,包括(NSString *name 和NSString *email)
-(void)sort
{
[book sortUsingSelector:@selector(compareNames:)]
}

其中:
@selector(compareNames:)
//创建一个SEL 类型的selector,sortUsingSelector:使用该方法比较数组中的两个元素,
sortUsingSelector:方法需要完成这样的比较,它先调用这个指定的selector 方法,然后向数组(接受 者)的第一条记录发送消息,比较其参数和此记录。指定方法的返回值为NSComparisonResult 类型,返 回值为:若小于返回NSOrderedAscending;相等返回NSOrderedSame;大于返回NSOrderedDescending

-(NSComparisonResult)compareNames:(id)element
{
return [name compare:[element name]];
}

NSDictionary:(关键字和定义的组合)
NSDictionary 通常在给定一个关键字(通常是一个NSString 字符串)下存储一个数值(可以是任何类 型的对象)。然后你可以使用这个关键字查找相应的数值。

使用dictionaryWithObjectsAndKeys :来创建字典
+ (id)dictionaryWithObjectsAndKeys :( id)firstObject , . . .

例如:
Tire *t1 = [Tire new];
NSDictionary *tires = [ NSDictionary dictionaryWithObjectsAndKeys :t1,@"front-left",nil];

使用方法objectForKey :来获取字典中的值
- (id)objectForKey :( id)akey;

查找轮胎可以这样:
Tire *tire = [tires objectForkey : @"front-left"];
创建新的NSMutableDictionary 对象,向类NSMutableDictionary 发送dictionary 消息。也可以使用 dictionaryWithCapacity : 方法来创建新的可变字典
+ (id)dictionaryWithCapacity :(unsigned int)numItems ;
可以使用方法setObject :forKey :方法给字典添加元素
setObject : forKey :( id)aKey

下面是另一种使用发送dictionary 消息来创建字典的方法:
NSMutableDictionary *tires;
tires = [NSMutableDictionary dictionary] ;
[tires setObject :t1 forKey :@"front-left"];
. . .
注:若对字典中已有的关键字使用setObject :forKey :方法,则用新的替换
可以使用removeObjectForKey : 方法来删除可变字典中的一个关键字
- (void)removeObjectForKey :(id)aKey ;
注:不要去创建NSString、NSArray 或NSDictionary 的子类,实在要的话可以用复合的方式来解决问题。

使用这种方法枚举词典:
for(NSString *key in g)
{
. . .
}

集合对象:
Set 是一组单值对象的集合,有可变和不可变,操作包括:搜索、添加、删除集合中的成员(仅用于可变集合)、比较两个集合,计算两个集合的交集和并集等。
#import <Foundation/NSSet.h>
常用的NSSet 方法

方法

说明

+(id)setWithObjects:obj1,obj2,...,nil

使用一列对象创建新集合

-(id)initWithObjects:obj1,obj2,...,nil

使用一列对象初始化新分配的集合

-(NSUInteger)count

返回集合的成员个数

-(BOOL)containsObject:obj

确定集合是否包含obj

-(BOOL)member:obj

使用isEqual:方法确定集合是否包含obj

-(NSEnumerator *)objectEnumerator

为集合中的所有对象返回一个NSEnumerator 对象

-(BOOL)isSubsetOfSet:nsset

确定receiver 的每个成员是否都出现在nsset 中

-(BOOL)intersectsSet:nsset

确定是否receiver 中至少一个成员出现在对象nsset 中

-(BOOL)isEqualToSet:nsset

确定两个集合是否相等

常用的NSMutableSet 方法(NSSet 的子类)
方法 说明

-(id)setWithCapacity:size

创建新集合,使其具有存储size 个成员的初始空间

-(id)initWithCapacity:size

将新分配的集合设置为size 个成员的存储空间

-(void)addObject:obj

将对象obj 添加到集合中

-(void)removeObject:obj

从集合中删除对象obj

-(void)removeAllObjects

删除接受者的所有成员

-(void)unionSet:nsset

将对象nsset 的所有成员昂添加到接受者

-(void)minusSet:nsset

从接受者中删除nsset 的左右成员

-(void)intersectSet:nsset

将接受者中的所有不属于nsset 的元素删除

注:NSInteger 不是一个对象,基本数据类型的typedef,被typedef 成64 位的long 或32 位int 各种数值:
 
NSNumber:
可以使用对象来封装基本数值。
 
NSNumber 类来包装基本数据类型。
+ (NSNumber *)numberWithChar :( char)value ;
+ (NSNumber *)numberWithInt :( int )value ;
+ (NSNumber *)numberWithFloat :( float)value ;
+ (NSNumber *)numberWithBool :( BOOL)value ;
 
还有包括无符号版本和各种long 型数据及long long 整型数据
例如:NSNumber *number = [NSNumber numberWithInt : 42] ;
 
将一个基本类型封装到NSNumber 后,可以使用下列方法重新获得:
方法说明
+(id)setWithObjects:obj1,obj2,...,nil 使用一列对象创建新集合
-(id)initWithObjects:obj1,obj2,...,nil 使用一列对象初始化新分配的集合
-(NSUInteger)count 返回集合的成员个数
-(BOOL)containsObject:obj 确定集合是否包含obj
-(BOOL)member:obj 使用isEqual:方法确定集合是否包含obj
-(NSEnumerator *)objectEnumerator 为集合中的所有对象返回一个
NSEnumerator 对象
-(BOOL)isSubsetOfSet:nsset 确定receiver 的每个成员是否都出现在
nsset 中
-(BOOL)intersectsSet:nsset 确定是否receiver 中至少一个成员出现
在对象nsset 中
-(BOOL)isEqualToSet:nsset 确定两个集合是否相等
方法说明
-(id)setWithCapacity:size 创建新集合,使其具有存储size 个成员的初始空间
-(id)initWithCapacity:size 将新分配的集合设置为size 个成员的存储空间
-(void)addObject:obj 将对象obj 添加到集合中
-(void)removeObject:obj 从集合中删除对象obj
-(void)removeAllObjects 删除接受者的所有成员
-(void)unionSet:nsset 将对象nsset 的所有成员昂添加到接受者
-(void)minusSet:nsset 从接受者中删除nsset 的左右成员
-(void)intersectSet:nsset 将接受者中的所有不属于nsset 的元素删除
- (char)charValue;
- (int)intValue;
- (float)floatValue;
- (BOOL)boolValue;
- (NSString *)stringValue;
 
NSValue:
NSNumber 实际上是NSValue 的子类,NSValue 可以封装任意值。可以用NSValue 将结构放入NSArray 和NSDictionary 中。
创建新的NSValue:
+(NSValue *)valueWithBytes : (const void *) value objCType : (const char *)type;
@encode 编译器指令可以接受数据类型的名称并为你生成合适的字符串。
NSRect rect = NSMakeRect(1,2,30,40);
NSValue * value ;
value = [NSValue valueWithBytes : &rect objCType : @encode(NSRect)];
 
使用getValue :来提取数值(传递的是要存储这个数值的变量的地址)(先找地址再取值)
value = [array objectAtIndex : 0];
[ value getValue : & rect ] ;
注:Cocoa 提供了将常用的struct 型数据转化成NSValue 的便捷方法:
+ (NSValue *)valueWithPoint :( NSPoint)point ;
+ (NSValue *)valueWithSize :( NSSize)size;
+ (NSValue *)valueWithRect :( NSRect)rect ;
- (NSSize)sizeValue;
- (NSRect)rectValue;
- (NSPoint)pointValue;
NSNull:
在关键字下如果属性是NSNull 表明没有这个属性,没有数值的话表明不知道是否有这个属性。[NSNull null] //总返回一样的值
+ (NSNull *)null;
例如:
[contast setObject : [NSNull null] forKey: @"home"];
访问它:
id home = [contast objectForKey : @"home" ] ;
if ( home = = [NSNull null] ) {
. . .
}
NSFileManager 允许对文件系统进行操作(创建目录、删除文件、移动文件或获取文件信息)
//创建一个属于自己的NSFileManager 对象
NSFileManager *manager = [NSFileManager defaultManager] ;
//将代字符‘~’替换成主目录
NSString *home = [@"~" stringByExpandingTildeInPath] ;
//输出文件的扩展名
- (NSString *)pathExtension
 

Foudation框架之一些常用结构体和常用类的更多相关文章

  1. iOS Foundation框架简介 -1.常用结构体的用法和输出

    1.安装Xcode工具后会自带开发中常用的框架,存放的地址路径是: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.plat ...

  2. 从头开始-07.Foundation框架常用结构体

    一.Foundation框架常用结构体NSRange\CGRange.NSPoint\CGPoint.NSSize\CGSize. NSRect\CGRect 的使用 1.  基本使用: //NSRa ...

  3. iOS Foundation框架 -1.常用结构体的用法和输出

    1.安装Xcode工具后会自带开发中常用的框架,存放的地址路径是: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.plat ...

  4. Objective-C( Foundation框架 一 常见的结构体)

    常见的结构体 (NSPoint,CGPoint).(NSRange,CGRange).(NSSize,CGSize) 苹果官方推荐使用CG开头的结构体 NSRange是Foundation框架中常见的 ...

  5. object-c 框架之经常使用结构体

    Foundation 框架定义经常使用结构体.结构体採用object-c 定义:经常使用NSSRange,NSPoint.NSSize,NSRect等 一.NSRange 创建范围结构体. 方法:NS ...

  6. OC基础--结构体 枚举做类成员属性

    结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation ...

  7. 关于结构体和C++类的内存地址问题

    关于结构体和C++类的内存地址问题   今天终于有时间写点东西了~ 太爽了  *_*   很多人都知道C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样 ...

  8. [OC Foundation框架 - 1] 常用结构体

    底层封装是使用了typedef定义的结构体 typedef struct _NSString{ xxx xxx } NSString;   1. NSRange 结构体 #注意结构体不是对象 3种定义 ...

  9. FFmpeg 常用结构体

    0.FFmpeg 中最关键的结构体之间的关系 FFmpeg 中结构体很多.最关键的结构体可以分成以下几类: 1)解协议(http, rtsp, rtmp, mms) AVIOContext,URLPr ...

随机推荐

  1. MongoDB入门简介

    MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...

  2. Ubuntu_10.04下Hadoop-0.20.2集群配置手册

    Ubuntu_10.04下Hadoop-0.20.2集群配置手册 一.软硬件环境的准备 下面的文章来自hadoopor.com,我先交待一下我自己的环境: 两台机器,每台机器上面两个虚机(vmware ...

  3. Ext.js form 表单提交问题

    var form = new Ext.form.FormPanel({ labelAlign : 'right', border : false, bodyStyle : 'background-co ...

  4. 以不同用户身份运行程序,/savecred只需要输入一次密码(GetTokenByName取得EXPLORER.EXE的令牌,然后调用CreateProcessAsUser,而且使用LoadUserProfile解决另存文件的问题)good

    http://blog.sina.com.cn/s/blog_65977dde0100s7tm.html ----------------------------------------------- ...

  5. Java native(转)

    Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能. 可以将 ...

  6. 数学(组合,容斥):COGS 1220. 盒子与球

    1220. 盒子与球 ★   输入文件:boxball.in   输出文件:boxball.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 现有r个互不相同的盒子和n ...

  7. Delphi TdxComponentPrinter页头页脚的设定

    TdxComponentPrinter页头页脚的设定 抄一段备忘.用程序控制也一样.如果是这样,那么 双击TdxComponentPrinter控件,在出现的窗口中,点击ADD,建立一个与TcxGri ...

  8. Windows下移动硬盘无法识别但是Mac下可以识别

    今天遇到一个问题,具体如下: 在Mac下正常使用的移动硬盘,在Windows下无法识别,打开显示"磁盘结构损坏且无法读取" 分析:Mac下既然能够正常使用,那么硬盘就应该是正常的, ...

  9. svn server安装配置

    安装平台:RHEL5 1.安装软件:httpd.subversion.mod_dav_svn 2.修改配置 修改/etc/httpd/conf.d/subversion.conf.eg: LoadMo ...

  10. JSTL和select标签的组合使用

    1.用于根据不同的值显示对应的内容,不能选择 <select name="grade"> <c:choose> <c:when test=" ...