Foundation框架1
- 什么是框架
- 众多功能\API的集合
- Foundation框架的作用
- Foundation框架是Mac\iOS中其他框架的基础
- Foundation框架包含了很多开发中常用的数据类型
- 结构体
- 枚举
- 类
- 如何使用Foundation框架
- 要想使用Foundation框架中的功能,包含它的主文件即可
#import <Foundation/Foundation.h>
Foundation框架中的类
- Foundation框架提供了非常多好用的类,比如
- NSString:字符串
- NSArray:数组
- NSDictionary:字典
- NSDate:日期
- NSData:数据
- NSNumber:数字
- Fouondation框架中的类都是以NS为前缀[Next Step]
- 乔布斯于1976年创立苹果公司
- 乔布斯于1985年离开苹果公司,创立Next公司,开发了Next Step操作系统
- 在开发Next Step操作系统过程中产生了Foundation框架
- 1997年,苹果公司收购Next公司,乔布斯重返苹果公司(Mac系统就是基于Next Step系统)
- 2007年,苹果公司发布了iOS系统(iOS系统基于Mac系统)
不小心修改了系统文件
- 有时候会在不经意之间修改了系统自带的头文件,比如NSString.h,这是会出现以下错误
-
- 解决方案很简单,只需要删除Xcode的缓存即可,缓存路径是
- /User/用户名/Library/Developer/Xcode/DerivedData(默认情况下,这是一个隐藏文件夹)
- 要想看到上述文件夹,必须在终端敲指令显示隐藏文件夹,指令如下
- 显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles - bool true
- 隐藏隐藏文件:defaults write com.apple.finder AppleShowAllFiles - bool false
- 解决方案很简单,只需要删除Xcode的缓存即可,缓存路径是
(输入指令后,一定要重新启动Finder)
NSString
- 什么是NSString
- 一个NSString对象就代表一个字符串(文字内容)
- 一般称NSString为字符串类
- 下图中的文字内容普遍都是用NSString来表示的
NSString的创建
- NSString的创建方式比较多
- 最直接的方式(这是常量字符串)
- NSString *str = @"I'm in itcast";
- 格式化的方式
- NSString *str = [NSString stringWithFormat:@"My age is %d",10];
- NSString *str = [[NSSring alloc] initWithForm:@"My age is %d",10];
- 从文件中读取
- 最直接的方式(这是常量字符串)
//用来保存错误信息 NSError *error = nil; //读取文件内容 NSString *str = [NSString stringWithContentsOfFile:@"/Users/mj/Desktop/text.txt" encoding:NSUTF8StringEncoding error:&error]; //如果有错误信息 if (error) { NSLog(@"读取失败,错误原因是:%@",[error localizedDescription]); }else { // 如果没有错误信息 NSLog(@"读取成功, 文件内容是:\n%@", str); }
-
- 从URL重读取
// 用来保存错误信息 NSError *error = nil; // 创建URL路径 NSURL *url = [NSURL URLWithString:@"file:///Users/mj/Desktop/test.txt"]; // 读取文件内容 NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; // 如果有错误信息 if (error) { NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]); } else { // 如果没有错误信息 NSLog(@"读取成功, 文件内容是:\n%@", str); }
URL
- 什么是URL
- URL的全称是Uniform Resource Locator (统一资源定位符)
- URL是互联网上标准资源的地址
- 互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置
- 根据一个URL就能找到唯一的一个资源
- URL的格式
- 基本URL包含协议、主机域名(服务器名称\IP地址)、路径
- 可以简单认为:URL == 协议头://主机域名/路径
- 常见的URL协议头(URL类型)
- http\http:超文本传输协议资源,网络资源
- ftp:文件传输协议
- file:本地电脑的文件
URL的创建
- 传入完整的字符串创建
- NSURL *url = [NSURL URLWithString:@"file:///Users/mj/Desktop/str.txt"];
- 通过文件路径创建(默认就是file协议的)
- NSURL *url = [NSURL fileURLWithPath:@"/User/mj/Desktop/str.txt"];
NSString的存储
- 可以将NSString存储到一个文件中
NSString *str = @"哇哈哈哈"; [str writeToFile:@"/Users/mj/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; [str writeToURL:[NSURL URLWithString:@"/Users/mj/Desktop/str.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString的大小写处理
- - (NSString *)uppercaseString;
- 全部字符转为大写字母
- - (NSString *)lowercaseString;
- 全部字符转为小写字母
- - (NSString *)capitalizedString;
- 首字母变大写,其他字母都变小写
NSString的比较
- - (BOOL)isEqualToString:(NSString *)aString;
- 两个字符串的内容相同就返回YES,否则返回NO
- - (NSComparisonResult)compare:(NSString *)string;
- 这个方法可以用来比较两个字符串内容的大小
- 比较方法:逐个字符的进行比较ASCII值,返回NSComparisonResult作为比较结果
- NSComparisonResult是一个枚举,有3个值:
- 如果左侧>右侧,返回NSOrderedDescending
- 如果左侧<右侧,返回NSOrderedAscending
- 如果左侧==右侧,返回NSOrderedSame
- - (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
- 忽略大小写进行比较,返回值与compare:一致
NSString的搜索
- - (BOOL)hasPrefix:(NSString *)aString;
- 是否以aString开头
- - (BOOL)hasSuffix:(NSString *)aString;
- 是否以aString结尾
- - (NSRange)rangeOfString:(NSString *)aString;
- 用来检查字符串内容中是否包含了aString
- 如果包含,就返回aString的范围
- 如果不包含,NSRange的location为NSNotFound,length为0
NSRange
- NSRange是Foundation框架中比较常用的结构体,它的定义如下:
typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; // NSUInteger的定义 typedef unsigned int NSUInteger;
- NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
- NSRange有两个成员
- NSUInteger location:表示该范围的起始位置
- NSUInteger length:表示该范围内的长度
- 比如@"I love iOS"中的@"iOS"可以用location为7,length为3的范围来表示
NSRange的创建
- 有三种方式创建一个NSRange变量
- 方式1
NSRange range; range.location = 7; range.length = 3;
-
- 方式2
NSRange range = {7, 3}; 或者 NSRange range = {.location = 7,.length = 3};
-
- 方式3
NSRange range = NSMakeRange(7, 3);
NSString的截取和替换
- - (NSString *) substringFromIdex:(NSUInteger)from;
- 从指定位置from开始(包括指定位置的字符)到尾部
- - (NSString *) substringToIndex:(NSUInteger)to;
- 从字符串的开头一直截取到指定的位置to,但不包括该位置的字符
- - (NSString *) substringWithRange:(NSRange)range;
- 按照所给出的NSRange从字符串中截取子串
- - (NSString *) stringByReplacingOccurrencesOfString: (NSString *) target withString:(NSString *) replacement;
- 用replacement替换了target
NSString与路径
- - (BOOL)isAbsolutePath;
- 是否绝对路径
- - (NSString *) lastPathComponent;
- 获得最后一个目录
- - (NSString *) stringByDeletingLastPathComponent;
- 删除最后一个目录
- - (NSString *) stringByAppendingPathComponent:(NSString *)str;
- 在路径的后面拼接一个目录
- (也可以使用stringByAppendingString:或者stringByAppendingFormat:拼接字符串内容)
NSString与文件拓展名
- - (NSString *)pathExtension;
- 获得拓展名
- - (NSString *)stringByDeletingPathExtension;
- 删除尾部的拓展名
- - (NSString *)stringByAppendingPathExtension:(NSString *)str;
- 在尾部添加一个拓展名
NSString的其他用法
- - (NSUinteger) length;
- 返回字符串的长度(有多少个文字)
- - (unichar) characterAtIndex:(NSUInteger)index;
- 返回index位置对应的字符
- 转为基本数据类型
- - (double)doubleValue;
- - (float) floatValue;
- - (int) intValue;
- - (char *)UTF8String;
- 转为C语言中的字符串
NSString去空格
- 去除所有的空格
- [str stringByReplacingOccurrencesOfString:@" " withString:@""];
- 去除首位的空格
- [str stringByTrimmingCharactersInSet:[NSCharacterSetwhitepaceCharacterSet]];