黑马程序员——OC基础学习(六)---Foundation框架的常用类



------  <a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a> 期待与您交流! -------



                Foundation框架的常用类



一.Foundation框架介绍

  

  1.什么是框架?

框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,

以便使研发程序变得更容易在OS X下的Mac操作系统中大约有80个框架

为所有程序开发奠定基础的框架称为Foundation框架

Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对

象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管

理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)


Cocoa是Foundation和AppKitCocoa Touch是Foundation和UIKit

Foundation框架中大约有125个可用的头文件,作为一个简单的形式,可以简单地使用以下语句导入 : #import <Foundation/Foundation.h> 因为Foundation.h文件实际上导入其他所有Foundation框架中的头文件 

  

  2.Foundation框架的作用

Foundation框架是Mac\iOS中其他框架的基础Foundation

框架包含了很多开发中常用的数据类型:

结构体

枚举


  3)如何使用Foundation框架

要想使用Foundation框架中的功能,包含它的主文件即可#import <Foundation/Foundation.h>


  4)不小心修改了系统的文件,引起的错误

有时候会在不经意之间修改了系统自带的头文件,比如NSString.h

解决方案很简单,只需要删除Xcode的缓存即可 







二.NSString 


  1.什么是NSString?

一个NSString对象就代表一个字符串(文字内容)

一般称NSString为字符串类 


  2.NSString的创建方式

1)最直接的方式(这是常量字符串)

NSString *str = @"abc";

NSString *st3 = @"abc"; 

注意此种写法,字符串储存在内存的常量区

2)格式化的方式

NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"]; 

NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];

注意这种写法,字符串存储在内存的堆区(地址不一样 

3) 从文件中读取

4) URL中读取 


  3.使用NSURL读写字符串 

(1)什么是URL?

URL的全称是Uniform Resource Locator(统一资源定位符)URL是

互联网上标准资源的地址互联网上的每个资源都有一个唯一的URL,

它包含的信息指出资源的位置根据一个URL就能找到唯一的一个资源 

(2)URL的格式?

基本URL包含协议、主机域名(服务器名称\IP地址)、路径协议 服务器的域名 路径

举例: http://ios.itcast.cn/ios/images/content_25.jpg


可以简单认为: URL == 协议头://主机域名/路径 

(3)常见的URL协议头(URL类型)

http\https :超文本传输协议资源, 网络资源

在URL前加https://前缀表明是用SSL加密的。 

你的电脑与服务器之间收发的信息传输将更加安全。

Web服务器启用SSL需要获得一个服务器证书并将该证书与

要使用SSL的服务器绑定。http和https使用的是完全不同

的连接方式,用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的

https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全

ftp :文件传输协议 

(4)使用NSURL读写字符串

传入完整的字符串创建

NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];

通过文件路径创建(默认就是file协议的)

NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"]; 

  4.NSString的常见方法: 

- (NSString *)uppercaseString;

全部字符转为大写字母

- (NSString *)lowercaseString

全部字符转为小写字母

- (NSString *)capitalizedString

首字母变大写,其他字母都变小写。如果一个句子中有多个单词,

那么会将每个单词的首字母变成大写,其余字母变成小写

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

两个字符串的内容相同就返回YES, 否则返回NO

注意: == 比较的是两个对象的地址是否相同, 不是字符串内容 

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

这个方法可以用来比较两个字符串内容的大小

比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果

NSComparisonResult是一个枚举,有3个值:

     如果左侧  >右侧,返回NSOrderedDescending,


     如果左侧  <右侧,返回NSOrderedAscending,


     如果左侧 ==右侧返回NSOrderedSame


     - (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;

     忽略大小写进行比较,返回值与compare:一致


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

    是否以aString开头 

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

是否以aString结尾

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

用来检查字符串内容中是否包含了aString

如果包含, 就返回aString的范围

如果不包含, NSRange的location为NSNotFound, length为0 

反方向搜索:[str rangeOfString: @”str” options: NSBackwardsSearch];

 // 从后向前搜索

- (NSString *)substringFromIndex:(NSUInteger)from;

从指定位置from开始(包括指定位置的字符)到尾部

- (NSString *)substringToIndex:(NSUInteger)to;

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

- (NSString *)substringWithRange:(NSRange)range;

按照所给出的NSRange从字符串中截取子串 

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)targetwithString:(NSString *)replacement;

用replacement替换target

- (NSUInteger)length;

返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)

- (unichar)characterAtIndex:(NSUInteger)index;返回index位置对应的字符


三.NSArray 


  1.什么是NSArray?

     NSArray是OC中的数组类, 开发中建议尽量使用NSArray

     替代C语言中的数组C语言中数组的弊端

int array[4] = {10, 89, 27, 76};

     只能存放一种类型的数据.(类型必须一致)不能很方便地动态添加数组元素、

     不能很方便地动态删除数组元素(长度固定) 


  2.NSArray的注意

只能存放任意OC对象, 并且是有顺序的

不能存储非OC对象, 比如int\float\double\char\enum\struct等

它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的

不能删除里面的元素,也不能再往里面添加元素 


  3.NSArray的创建方式

1)NSArray的类方法创建

+ (instancetype)array;

+ (instancetype)arrayWithObject:(id)anObject;

+ (instancetype)arrayWithObjects:(id)firstObj, ...;

+ (instancetype)arrayWithArray:(NSArray *)array;

+ (id)arrayWithContentsOfFile:(NSString *)path; //读取一个xml文件.

+ (id)arrayWithContentsOfURL:(NSURL *)url; //读取一个xml文件

2)使用NSArray的对象方法创建 

3)使用已经存在数组创建新的数组 

  4.NSArray的使用注意

NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。

NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是

数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。

NSArray *array = [NSArray array]; 

// 这样的数组永远是空的,不可能向其中增加值(不可变性) 

 

    5.NSArray的常见用法

- (NSUInteger)count;获取集合元素个数

- (id)objectAtIndex:(NSUInteger)index;获得index位置的元素

-(BOOL)containsObject:(id)anObject;

是否包含某一个元素

- (id)lastObject;返回最后一个元素

- (id)firstObject;返回最后一个元素 

- (NSUInteger)indexOfObject:(id)anObject;

查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound

- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;

在range范围内查找anObject元素在数组中的位置 

  6.NSArray的简写形式


自从2012年开始, Xcode的编译器多了很多自动生成

代码的功能,使得OC代码更加精简数组的创建

之前

[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];

现在

@[@"Jack", @"Rose", @"Jim"];


数组元素的访问

之前

[array objectAtIndex:0];

现在

array[0]; 


  7.NSArray 的遍历方法

(1)NSArray的下标遍历 

(2)NSArray的快速遍历

(3)NSArray使用block遍历


  8.NSArray 读写文件


           (1)NSArray数据写入到文件中

           (2)从文件中读取数据到NSArray中 


   9.NSArray 与字符串 

                      (1)把数组元素链接成字符串 

                 - (NSString *)componentsJoinedByString:(NSString *)separator;

                这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串


            (2)字符串分割方法  


 



四.NSMutableArray 


   

  1.NSMutableArray介绍

NSMutableArray是NSArray的子类

NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 

不能删除里面的元素,也不能再往里面添加元素

NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素

// 创建一个空的NSMutableArray

NSMutableArray *array = [NSMutableArray array]; 

  2.NSMutableArray基本使用方法

- (void)addObject:(id)object;

添加一个元素 

- (void)addObjectsFromArdObray:(NSArray *)array;

添加otherArray的全部元素到当前数组中 

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

在index位置插入一个元素 

- (void)removeLastObject;

删除最后一个元素 

- (void)removeAllObjects;

删除所有的元素 

- (void)removeObjectAtIndex:(NSUInteger)index;

删除index位置的元素


- (void)removeObject:(id)object;

删除特定的元素


- (void)removeObjectsInRange:(NSRange)range;

删除range范围内的所有元素


- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

用anObject替换index位置对应的元素

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

交换idx1idx2位置的元素 

  3.NSMutableArray 错误用法 

NSMutableArray *array = @[@"bob", @"steve", @"john"];

[array addObject:@“Peter”];

// 错误,使用@[@"bob", @"steve", @"john"]这种方式创建的永远是NSArray(不可变数组)


// 正确

NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"bob", @"steve", @"john"]];

[array addObject:@"Peter"]; 




五.NSDictionary


  1.什么是NSDictionary 

NSDictionary翻译过来叫做“字典”
日常生活中,

“字典”的作用: 通过一个拼音或者汉字,就能找到对应的详细解释 

NSDictionary的作用类似:通过一个key(键), 就能找到对应的value(值) 

NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改 

 

  2.NSDictionary的创建 

+ (instancetype)dictionary;
+ (instancetype)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key; // objectForKey,根据键取值。 

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

  3.快速创建字典 


@{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"}; 

 

  4.键值对集合的特点 

1)字典存储的时候,必须是"键值对"的方式来存储(同时键不要重复) 

2.)键值对中存储的数据是"无序的"


3.)键值对集合可以根据键, 快速获取数据


  5. NSDictionary基本使用方法 

- (NSUInteger)count; 返回字典的键值对数目 

- (id)objectForKey:(id)aKey; 根据key取出value 

 

  6.NSDictionary遍历方法 

1)快速遍历 

for (NSString *key in dict) { } 

2)Block遍历 

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { }]; 

 

  7. NSDictionary的简写形式


1)NSDictionary的创建 

以前


[NSDictionary dictionaryWithObjectsAndKeys:@"Jack", @"name", @"男", @"sex", nil]; 

现在

@{@"name": @"Jack", @"sex" : @"男”}; 


2)NSDictionary获取元素 

以前 

[dict objectForKey:@"name”]; 

现在 

dict[@"name”]; 


  8.NSDictionary文件操作


将字典写入文件中


- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 

- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically; 

 

从文件中读取字典到内存中

+ (id)dictionaryWithContentsOfFile:(NSString *)path; 

保存结果是xml文件格式,但苹果官方推荐为plist后缀.

把字典放到NSArray中,调用array的writeToFile 

+ (id)dictionaryWithContentsOfURL:(NSURL *)url; 



  9. NSDictionary使用注意 


字典中的键不要重复。(虽然重复也不报错,会自动取在前面的那个) 






. NSMutableDictionary


  1.什么是NSMutableDictionary 

NSMutableDictionary是NSDictionary的子类
NSDictionary是不可变的,一旦初始化完

毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素 

NSMutableDictionary是可变的,随时可以往里面添加\更改\删除元素 


  2.NSMutableDictionary常用方法 


- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey; 

添加一个键值对(会把aKey之前对应的值给替换掉) 


- (void)removeObjectForKey:(id)aKey; 

通过aKey删除对应的value 


- (void)removeAllObjects; 

删除所有的键值对 

 

  3. NSMutableDictionary简写形式 


快速创建可变字典

 

dict.dictionary = @{@"name" : @"bob", @"age" : @"18"}; 
 
设置键值对 


以前

[dict setObject:@"Jack" forKey:@"name”]; 
现在

dict[@"name"] = @"Jack"; 





. NSRange

 

  1. NSRange的定义和使用 

NSRange是Foundation框架中比较常用的结构体, 它的定义如下:

typedef struct _NSRange { 

NSUInteger location; 

NSUInteger length; } NSRange; 

// NSUInteger的定义
typedef unsigned int NSInteger; typedef unsigned long NSUInteger; 

NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围 


  2.NSRange创建的几种方式 

方式

NSRange range; 

range.location = 7; 

range.length = 3; 

方式

NSRange range = {7, 3}; 

或者 

NSRange range = {.location = 7, .

length = 3}; 

方式3 : 

使用NSMakeRange函数 

NSRange range = NSMakeRange(7, 3); 

方式4 : 

最直接的方式 

NSRange range = {5,8}; 

查看Range的值,可以使用 NSLog(@"%@",NSStringFromRange(range));


 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值