表示范围作用的结构体: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

转载于:https://www.cnblogs.com/ranger-cc/p/3668448.html

Foudation框架常用结构体和常用类相关推荐

  1. 二十四、V4L2框架主要结构体分析和虚拟摄像头驱动编写

    一.V4L2框架主要结构体分析 V4L2(video for linux version 2),是内核中视频设备的驱动框架,为上层访问视频设备提供统一接口. V4L2整体框架如下图: 图中主要包括两层 ...

  2. Foundation框架: 5.常用结构体知识补充

    前面我们已经把常用的四个结构体学完了, 知道怎么去创建怎么去使用了, 但还有一些小细节没有补充完, 下面让我们一起来看看吧: 例子: #import <Foundation/Foundation ...

  3. Android系统源码分析/多媒体框架/音频子系统/常用结构体分析-audio.h

    audio_stream_type_t 定义音频流类型,主要是手机系统各类典型的音频流做出属性上的区分,举个例子:电话和媒体2种类型的音频不管从输出的设备(耳机.功放.还是蓝牙)都是存在明显的不同.把 ...

  4. oc基础-foundation框架中的常用结构体

    1.CGPoint/NSPoint :表示坐标点的 创建: CGPoint *cp=NSMakePoint(10,10); //x,y NSPonit *cp=CGPointMake(10,10); ...

  5. 黑马程序员15——OC之Fundation(了解常用结构体)

    下面是OC里面常用的结构体 /* NSRange(location length)  NSPoint\CGPoint  NSSize\CGSize  NSRect\CGRect (CGPint CGS ...

  6. C++学习笔记之二:通过结构体来理解类

    如果我们熟悉C中的结构体的话,理解C++中的类是很容易的.在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数.我们先来看一下C++中的结构体和类的异同之处:   ...

  7. C++结构体实例和类实例的初始化

    结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中.不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的. 一.若类和结构体所有数据成员均 ...

  8. C++结构体实例和类实例的初始化 .

    结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中.不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的. 一.若类和结构体所有数据成员均 ...

  9. C++模板学习:函数模板、结构体模板、类模板

    C++模板:函数.结构体.类 模板实现 1.前言:(知道有模板这回事的童鞋请忽视) 普通函数.函数重载.模板函数 认识. //学过c的童鞋们一定都写过函数sum吧,当时是这样写的: int sum(i ...

最新文章

  1. Elasticsearch:用于内容丰富的文本分析
  2. linux安装weblogic_WebLogic的Azure虚拟机主要版本发布
  3. Deep Residual Network
  4. 限制内核printk的打印频率
  5. 多标签分类的评价指标
  6. Blender插件之Panel
  7. python os.path.splitext()的用法_Python中的os.path路径模块中的操作方法总结
  8. idea教育版增加springboot插件
  9. pc上最好用的pdf阅读工具(PDF Xchange Viewer)
  10. grep指令与ps指令的详细使用说明
  11. 《从0到1:CTFer成长之路》2.1 SSRF漏洞
  12. MATLAB初探:美国人口与年份数据拟合
  13. 南京大学计算机2021年考研,2021年南京大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
  14. 【爬虫BUG】‘list‘ object has no attribute ‘text‘
  15. 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成
  16. 基于python的json脚本解析
  17. 设计模式-合成复用原则-》面向对象设计原则
  18. 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
  19. layui 表格内容写temple函数_templet渲染layui表格数据的三种方式
  20. WirelessCar选择亚马逊云科技为云服务商,打造全场景互联汽车解决方案

热门文章

  1. linux apt-get 源,Ubuntu应用之——apt-get更改源地址
  2. java虚拟键盘_web虚拟键盘VirtualKeyboard
  3. 用Location对象和history对象修改页面url
  4. python爬取素材图片代码_基于Python爬取素材网站音频文件
  5. sqlserver 班级排名_Sqlserver:班级排名问题(转发)
  6. python词云图代码示例 无jieba_【词云图】如何用python的第三方库jieba和wordcloud画词云图...
  7. mysql增删改查的命令_MySql增删改查命令
  8. java根据pdf模板生成pdf_Java 复制、压缩PDF文档
  9. 网络安全-Internet安全体系结构
  10. sed 删除windows下的CR/LF