一、NSString
Person *p = [[Person alloc] init];
Person *persons[5] = {p, [[Person alloc] init]};
------------------------------------------------
NSString : 不可变字符串
NSMutableString : 可变字符串
NSMutableString : 可变字符串
NSMutableString 继承自NSString
1.字符串的创建
NSString *s1 = @"jack";
NSString *s2 = [[NSString alloc] initWithString:@"jack"];
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
NSString *s1 = @"jack";
NSString *s2 = [[NSString alloc] initWithString:@"jack"];
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
类方法: [NSString stringWithFormat:@""];
字符串转换
// C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
// C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
从文件中读取字符串
NSUTF8StringEncoding 用到中文就可以用这种编码
NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
类方法: [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
类方法: [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];
// URL : 资源路径
// 协议头://路径
// file://
// ftp://
// http://weibo.com/a.png
// 协议头://路径
// file://
// ftp://
// http://weibo.com/a.png
把字符串转换成一个URL
必须加上协议头
对象方法:NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
类方法: [NSURL URLWithString:<#(NSString *)#>];
对象方法:NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
类方法: [NSURL URLWithString:<#(NSString *)#>];
不必加上协议头
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
注意:一般都会有一个类方法跟对象方法配对
2.把字符串写入文件
字符串的导出
atomically:YES比较安全,当中途写入失败,文件不会创建
NO,中途写入失败,仍然创建
[@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
3.NSMutableString创建
NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
拼接字符串
[s1 appendString:@" 11 12"];
二、NSArray
NSArray :不可变数组
NSMutableArray : 可变数组
NSMutableArray : 可变数组
int a = 5;
int ages[10] = {1, 90, 89, 17};
int ages[10] = {1, 90, 89, 17};
Person *p = [[Person alloc] init];
Person *persons[5] = {p, [[Person alloc] init]};
OC数组不能存放nil值
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
这个array永远是空数组
NSArray *array = [NSArray array];
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
这个array永远是空数组
NSArray *array = [NSArray array];
1.NSArray的创建
NSArray *array2 = [NSArray arrayWithObject:@"jack"];
[array2 count];
// nil是数组元素结束的标记
NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];
NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];
快速创建一个NSArray对象
NSArray *array4 = @[@"jack", @"rose", @"4324324"];
2.NSArray的元素个数
NSLog(@"%ld", array3.count);
3.NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);
//array3[1];
NSLog(@"%@", array3[0]);
4.遍历数组
创建数组 array
Person *p = [[Person alloc] init];
NSArray *array = @[p, @"rose", @"jack"];
遍历的几种方式
for (int i = 0; i<array.count; i++)
{
NSLog(@"%@", array[i]);
}
------------------------------------------------
id obj代表着数组中的每一个元素
-----------------------------------------------
---------------------------------------------------------------------------
int i = 0;
for (id obj in array)
{
// 找出obj元素在数组中的位置
NSUInteger i = [array indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
//i++;
if (i==1)
{
break;
}
}
-----------------------------------------------
[array enumerateObjectsUsingBlock:
// 每遍历到一个元素,就会调用一次block
// 并且当前元素和索引位置当做参数传给block
^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx == 0)
{
// 停止遍历
*stop = YES;
}
}];
---------------------------------------------------------------------------
void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx == 0)
{
// 停止遍历
*stop = YES;
}
};
for (int i = 0; i<array.count; i++)
{
// 用来标记是否需要停止遍历
BOOL isStop = NO;
// 取出元素
id obj = array[i];
myblock(obj, i, &isStop);
if (isStop)
{
break;
}
}
}
5.NSMutableArray : 可变数组
创建
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jack"];
删除元素
//[array removeAllObjects];
添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jack"];
删除元素
//[array removeAllObjects];
删除指定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
错误写法
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];
错误写法
[array addObject:nil];
注意:
@[] 只创建不可变数组NSArray
错误写法
NSMutableArray *array = @[@"jack", @"rose"];
[array addObject:@"jim"];
三、 NSFileManager
NSMutableArray *array = @[@"jack", @"rose"];
[array addObject:@"jim"];
三、 NSFileManager
文件管理者
1.获得文件管理者
NSFileManager *mgr = [NSFileManager defaultManager];
2.标记是否为文件夹
BOOL dir = NO; // 标记是否为文件夹
标记这个路径是否存在
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
NSFileManager *mgr = [NSFileManager defaultManager];
2.标记是否为文件夹
BOOL dir = NO; // 标记是否为文件夹
标记这个路径是否存在
BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];
3.当一个路径为文件夹时,获得当前文件夹path下面的所有内容(文件夹、文件)
NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];4.获得子文件(夹)的全路径
NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename];
NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename];
5.判断文件扩展名(忽略大小写)
NSString *extension = [[path pathExtension] lowercaseString];
if (![extension isEqualToString:@"h"])
{
// 文件拓展名不是h
return 0;
}
{
// 文件拓展名不是h
return 0;
}
四、NSSet
无序
NSSet和NSArray的对比
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
基本使用
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
随机拿出一个元素
NSString *str = [s2 anyObject];
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
随机拿出一个元素
NSString *str = [s2 anyObject];
添加元素
NSMutableSet *s = [NSMutableSet set];
[s addObject:@"hack"];
[s addObject:@"hack"];
删除元素
[s removeObject:<#(id)#>];
[s removeObject:<#(id)#>];