------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.简介
就像Foundation的名字一样,这个框架是iOS开发的基础框架,里面包含了开发常用的一些方法
- 结构体
- 枚举
- 类
要想使用这个框架,就要包含它的头文件:
#import <Foundation/Foundation.h>
2.NSString介绍及基本使用
一般称NSString类为字符串类。
NSString的创建方式:
一般方式:NSString *str =@“asd”;存储在常量区
格式化的方式:NSString *str = [NSString stringWithFormat:@"%@", @"asd"];存储在堆区
可以从文件中读取也可以从URL中读取。
NSString字符串比较:
比较大小可以用compare方法,返回值有三种:
NSOrderedAscending, NSOrderedSame, NSOrderedDescending,
分别是 -1,0,1
在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件。
NSString前后缀检查及搜索:
检查字符串是否以另一个字符串开头,-(BOOL) hasPrefix: (NSString *) aString;
判断字符串后缀
判断字符串是否以另一个字符串结尾,-(BOOL) hasSuffix: (NSString *) aString;
字符串查找:
-(NSRange)rangeOfString:(NSString *)aString;
用来检查字符串内容中是否包含了aString,如果包含, 就返回aString在字符串中第一次出现的范围
获取字符串的每个字符:
-(NSUInteger)length;
返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
-(unichar)characterAtIndex:(NSUInteger)index;
返回index位置对应的字符
字符串转为基本数据类型
-(double)doubleValue;
-(float)floatValue;
-(int)intValue;
-(char *)UTF8String; // 在操作SQLite数据库时才会用到,转为C语言中的字符串。
去除所有的空格
[str stringByReplacingOccurrencesOfString:@" " withString:@""]
[str stringByReplacingOccurrencesOfString:@" " withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
3.NSURL读写字符串
URL的全称是Uniform Resource Locator(统一资源定位符),URL是互联网上标准资源的地址。
互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置,根据一个URL就能找到唯一的一个资源。
传入完整的字符串创建
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];
通过文件路径创建(默认就是file协议的)
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];
4.NSRange的使用
NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围。
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
// NSUInteger的定义
typedef unsigned int NSInteger;
typedef unsigned long NSUInteger;
5.字符串的截取和替换
-(NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
-(NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
-(NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串。
-(NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;用replacement替换
6.NSMutableString 介绍和使用
NSMutableString类继承NSString类,那么NSString提供的方法在NSMutableString中基本都可以使用,
NSMutableString好比一个字符串链表,它可以任意的动态在字符串中添加字符串删除字符串指定位置插入字符串,使用它来操作字符串会更加灵活。
NSMutableString和NSString的区别:
NSString是不可变的, 里面的文字内容是不能进行修改的;
NSMutableString是可变的, 里面的文字内容可以随时更改;
NSMutableString能使用NSString的所有方法。
字符串的可变与不可变问题:
不可变:指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;
可变:指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改;
7.NSArray的使用
NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组
C语言中数组的弊端
int array[4] = {10, 89, 27, 76};
只能存放一种类型的数据.(类型必须一致)
不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)
NSArray的使用注意:
只能存放任意OC对象, 并且是有顺序的
不能存储非OC对象, 比如int\float\double\char\enum\struct等
它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素。
1)NSArray的类方法创建
+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; // 读取一个xml文件.
+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件.
数组使用注意:
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。
NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0。0也是基本数据类型,不能存放到NSArray中。
8.NSFileManager介绍
NSFileManager是用来管理文件系统的
它可以用来进行常见的文件\文件夹操作(拷贝、剪切、创建等)。
使用defaultManager方法可以获得那个单例对象
[NSFileManager defaultManager]
-(BOOL)fileExistsAtPath:(NSString *)path; path这个文件或文件夹(目录)是否存在
-(BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory; path这个文件或文件夹是否存在, isDirectory代表是否为文件夹
-(BOOL)isReadableFileAtPath:(NSString *)path; path这个文件或文件夹是否可读
-(BOOL)isWritableFileAtPath: path这个文件或文件夹是否可写
-(NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error; 获得path这个文件\文件夹的属性
-(NSArray *)subpathsAtPath:(NSString *)path;
查找给定路径下的所有子路径,返回一个数组, 深度查找,不限于当前层,也会查找package的内容。
查找给定路径下的所有子路径,返回一个数组, 深度查找,不限于当前层,也会查找package的内容。
-(NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;
获得path的所有子路径(后代路径),上面两个方法功能一样。
获得path的所有子路径(后代路径),上面两个方法功能一样。
-(NSData *)contentsAtPath:(NSString *)path;
获得文件内容
获得文件内容
-(BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error;
只能创建文件夹(createIntermediates为YES代表自动创建中间的文件夹) 。注意如果要创建的目录已经存在,则本次创建失败
只能创建文件夹(createIntermediates为YES代表自动创建中间的文件夹) 。注意如果要创建的目录已经存在,则本次创建失败
-(BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
拷贝,如果目标目录已经存在同名文件,则无法拷贝
拷贝,如果目标目录已经存在同名文件,则无法拷贝
-(BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
移动(剪切)
-(BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
删除
删除
-(BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
创建文件,(NSData是用来存储二进制字节数据的)
创建文件,(NSData是用来存储二进制字节数据的)
NSFileManager文件下载思路:
1.发送请求给服务器,要求下载某个文件
2.服务器发出响应,返回文件数据
3.手机客户端利用NSData来存放服务器返回的文件数据
4.利用NSFileManager将NSData里面的文件数据写到新的文件中.(createFileAtPath)
3.手机客户端利用NSData来存放服务器返回的文件数据
4.利用NSFileManager将NSData里面的文件数据写到新的文件中.(createFileAtPath)