1.Foundation框架介绍
什么是框架?
众多功能\API的集合
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation 框架
Foundation框架的作用
Foundation框架是Mac\iOS中其他框架的基础
Foundation框架包含了很多开发中常用的数据类型:
* 结构体
* 枚举
* 类
如何使用Foundation框架
Foundation框架中大约有125个可用的头文件,作为一个简单的形式,可以简单地使用以下语句导入#import<Foundation/Foundation.h>因为Foundation.h文件实际上导入其他所有Foundation框架中的头文件
Foundation框架中的类
Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)
Foundation框架提供了非常多好用的类, 比如
```
NSString : 字符串
NSArray : 数组
NSDictionary : 字典
NSDate : 日期
NSData : 数据
NSNumber : 数字
```
Foundation框架中的类都是以NS为前缀(Next Step的缩写)
乔布斯于1976年创立苹果公司
乔布斯于1985年离开苹果公司, 创立NeXT公司, 开发了Next Step操作系统
在开发Next Step操作系统过程中产生了Foundation框架
1997年, 苹果公司收购NeXT公司, 乔布斯重返苹果公司(Mac系统就是基于Next Step系统)
2007年, 苹果公司发布了iOS系统(iOS系统基于Mac系统)
---
2.Foundation框架常见错误
有时候会在不经意之间修改了系统自带的头文件, 比如NSString.h, 这时会出现以下错误:
解决方案很简单, 只需要删除Xcode的缓存即可
缓存路径是/Users/用户名/Library/Developer/Xcode/DerivedData(默认情况下, 这是一个隐藏文件夹)
要想看到上述文件夹, 必须在终端敲指令显示隐藏文件夹, 指令如下
显示隐藏文件 : defaults write com.apple.finderAppleShowAllFiles–bool true
隐藏隐藏文件 : defaults write com.apple.finderAppleShowAllFiles–bool false
(输入指令后, 一定要重新启动Finder)
1.NSString基本概念
什么是NSString?
一个NSString对象就代表一个字符串(文字内容)
一般称NSString为字符串类
2.NSString创建方式
最直接的方式(常量字符串)
常量区中的字符串只要内容一致, 不会重复创建
NSString *str1 = @"lnj";
NSString *str3 = @"lnj";
NSLog(@"str1 = %p, str3 = %p", str1, str3);
输出地址一致
格式化的方式
堆区中得字符串哪怕内容一致, 也会重复创建
NSString *str2 = [NSStringstringWithFormat:@"lnj"];
NSString *str4 = [NSStringstringWithFormat:@"lnj"];
NSLog(@"str2 = %p, str4 = %p", str2, str4);
输出地址不一样
1.直接读写文件中的字符
- 从文件中读取
```
// 用来保存错误信息
NSError *error = nil;
// 读取文件内容
NSString *str = [NSStringstringWithContentsOfFile:@"/Users/LNJ/Desktop/lnj.txt" encoding:NSUTF8StringEncoding error:&error];
// 如果有错误信息
if (error) {
NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);
} else { // 如果没有错误信息
NSLog(@"读取成功, 文件内容是:\n%@", str);
}
```
- 写入文件中
```
NSString *str = @"江哥";
BOOL flag = [strwriteToFile:@"/Users/LNJ/Desktop/lnj.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
if (flag == 1)
{
NSLog(@"写入成功");
}
```
- 重复写入同一文件会覆盖掉上一次的内容
```
NSString *str1 = @"小哥";
BOOL flag = [str1 writeToFile:@"/Users/LNJ/Desktop/lnj.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *str2 = @"大哥";
[str2writeToFile:@"/Users/LNJ/Desktop/lnj.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *str = [NSStringstringWithContentsOfFile:@"/Users/LNJ/Desktop/lnj.txt" encoding:NSUTF8StringEncoding error:&error];
NSLog(@"str = %@", str);
输出结果:大哥
```
---
##2.NSURL简介
- 什么是URL
URL的全称是Uniform Resource Locator(统一资源定位符)
URL是互联网上标准资源的地址
互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置
根据一个URL就能找到唯一的一个资源
- URL的格式
基本URL包含协议、主机域名(服务器名称\IP地址)、路径
举例: http://www.520it.com/ios/images/content_25.jpg
可以简单认为: URL == 协议头://主机域名/路径
- 常见的URL协议头(URL类型)
http\https :超文本传输协议资源, 网络资源
ftp :文件传输协议
file :本地电脑的文件
URL的创建
传入完整的字符串创建
```
NSURL *url = [NSURL URLWithString:@"file:///Users/LNJ/Desktop/str.txt"];
```
通过文件路径创建(默认就是file协议的)
```
NSURL *url = [NSURL fileURLWithPath:@"/Users/LNJ/Desktop/str.txt"];
```
3.使用NSURL读写字符串
从URL中读取
```
// 用来保存错误信息
NSError *error = nil;
// 创建URL路径
// NSString *path = @"file://192.168.199.119/Users/LNJ/Desktop/lnj.txt";
// 本机可以省略主机域名
// NSString *path = @"file:///Users/LNJ/Desktop/lnj.txt";
NSURL *url = [NSURL URLWithString:path];
// 利用fileURLWithPath方法创建出来的URL默认协议头为file://
NSURL *url = [NSURL fileURLWithPath:@"/Users/LNJ/Desktop/lnj.txt"];
// 读取文件内容
NSString *str = [NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
// 如果有错误信息
if (error) {
NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);
} else { // 如果没有错误信息
NSLog(@"读取成功, 文件内容是:\n%@", str);
}
```
- 写入URL中
```
NSString *str = @"江哥";
[strwriteToURL:[NSURL URLWithString:@"/Users/LNJ/Desktop/lnj.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];
int main(intargc, constchar * argv[]) {
/*
1.如何创建一个NSString对象, 字符串
*/
// 1.通过@""直接创建
// 如果通过@""创建字符串, 那么会将字符串放到常量区中
// 如果是字符串常量, 那么只要内容相同 , 不会重复创建
NSString *str1 = @"lnj";
// 2.通过alloc或者类工厂方法创建
// 如果是通过alloc或者类工厂方法创建, 那么会将字符串放到堆区中
// NSString *str2 = [[NSStringalloc] initWithString:@"lnj"];
// NSString *str3 = [NSStringstringWithFormat:@"lmj"];
// NSString *str3 = [[NSStringalloc] initWithString:@"lmj"];
NSString *str3 = [NSStringstringWithFormat:@"age is %i", 10];
NSString *str4 = @"lnj";
NSLog(@"str1 = %p, str4 = %p", str1, str4);
// NSString *str5 = [NSStringstringWithFormat:@"lmj"];
// NSString *str5 = [[NSStringalloc] initWithString:@"lmj"];
NSString *str5 = [NSStringstringWithFormat:@"age is %i", 10];
NSLog(@"str3 = %p, str5 = %p", str3, str5);
return0;
}
int main(intargc, constchar * argv[]) {
/*
file: 文件路径,
encoding: 编码英文 iOS-5988-1 中文 GBK GBK2312 , 一般情况填写UTF-8
error: 如果读取错误, 会将错误信息保存到error中 ,如果读取正确, 就没有error = nil */
NSString *path = @"/Users/xiaomage/Desktop/课堂共享/day17/note/lnj.txt";
NSError *error = nil;
// 从文件中读取字符串
/*
NSString *str = [NSStringstringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
NSLog(@"str = %@", str);
}else
{
NSLog(@"error = %@", [error localizedDescription]);
}
*/
/*
// 将字符串写入到文件中
NSString *str = @"iOS0601基础班";
// atomically 如果传入YES, 字符串写入文件的过程中如果没有写完, 那么不会生成文件
// 如果传入NO, 字符串写入文件的过程中如果没有写完, 会生成文件
NSString *path2 = @"/Users/xiaomage/Desktop/abc.txt";
BOOL flag = [str writeToFile:path2atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@"flag = %i", flag);
*/
return0;
}
|
|