您的位置:首页 > 职场人生

黑马程序员-----OC学习之Foundation中的类

2015-08-19 10:30 471 查看
Foundation中的类:
NSString:不可变字符串:

//快速创建
NSString *str = @"this is just a demo";
//格式化创建
int a=2;
NSString *str2 = [[NSString alloc]initWithFormat:@"this is a demo%d",a ];

NSString *str3= [[NSString alloc]initWithUTF8String:"just a demo"];

//从文件中加载
NSString *str4 = [[NSString alloc]initWithContentsOfFile:@"/Users/shmily/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];

//从 url 中加载
NSURL *url = [NSURL URLWithString:@"file:///Users/shmily/Desktop/1.txt"];
NSString *str5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

NSLog(@"%@\n%@\n%@\n%@\n%@",str,str2,str3,str4,str5);


字符串的创建方式:
1) 最直接的方式(这是常量字符串):注意这种写法,字符串存储在内存的常量区,地址一样;
NSString *str1 = @"abc";

2) 格式化的方式:注意这种写法,字符串存储在内存的堆区(地址不一样)
NSString *str2 = [NSString stringWithFormat:@"%@", @"jack"];
NSString *str3 = [[NSString alloc] initWithFormat:@"My age is %d", 10];//基本不用;

3) 从文件中读取
NSString *str4 = [NSString stringWithContentsOfFile:@"/Users/apple/Desktop/t.txt" encoding:NSUTF8StringEncoding error:&err];

4) 从URL中读取
传入完整的字符串创建
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"]; 
通过文件路径创建(默认就是file协议的)
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];

通过NSString进行文件读写
****方式一, 直接根据给定的路径来读写文件(一般用来读取本地文件)
*文件写入: [str1 writeToFile:@"路径" atomically:YES
encoding:NSUTF8StringEncoding error:nil];

*文件读取: [NSString stringWithContentsOfFile:@"路径"
encoding:NSUTF8StringEncoding error:nil];

****方式二, 根据给定的NSURL对象来读写文件(一般用来读取网络资源文件) **** 1> 根据路径创建NSURL对象。
** 创建NSURL的两种方式:
1. NSURL *url = [NSURL URLWithString:@"file:///Users/Steve/Desktop/传智iOS13 期-OC基础加强/PPTs/str1.txt"];
** 通过这种方式创建NSURL对象, 需要指定协议类型, 比如"http://" 、 "ftp://" 、 "file://" 、"https://"等协议。
** 通过这种方式创建的NSURL, 如果路径中有中文, 则无法正常使用, 需要使用下面的方 式来创建。
2. NSURL *url = [NSURL fileURLWithPath:@"/Users/Steve/Desktop/传智iOS13期-OC基 础加强/PPTs/str1.txt"];
** 这种方式创建的NSURL对象, 默认就是读取本地文件的NSURL对象, 以"file://" 开头
2> 根据NSURL对象来读取文件内容。
* [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:
&err];

5> 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; 是否以aStr

NSString的子类NSMutableString:可变字符串;

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];
// 拼接内容到s1的后面
[s1 appendString:@" 11 12"];

// 获取is的范围
NSRange range = [s1 rangeOfString:@"is"];
[s1 deleteCharactersInRange:range];
NSString *s2 = [NSString stringWithFormat:@"age is 10"];
//添加字符串到指定已有字符串
NSString *s3 = [s2 stringByAppendingString:@" 11 12"];
NSLog(@"s1=%@, s2=%@", s1, s2);


对比NSString:
都创建一个字符创
NSString *s1 = [NSString stringWithFormat:@“age is %d”,10];

NSMutableString *s2 = [NSMutableString stringWithFormat:@“age is %d”,10];
因为s1是固定不变的,所以s1一直是 age is 10;
而s2是可变的 所以我们可以在后面加字符创如:
[s2 appendString:@“11 12”];//这是个给字符串加字符的函数;
这样s2这个字符串就变成了 age is 10 11 12;
我们既然可以加字符 也可以删除字符 例如 :
[s2 deleteCharactersInRange:NSMakeRange(4,2)];//这是表示将一个范围的字符串删除;
经过上述操作之后,我们的age is 10 中的10就会被删除了;当然我们要准确的找出要删除的内容 我们通常还会用到一个
rangeOfString这个函数 
1. NSRange range = [s2 rangeOfString :@“is”];这就表示获取字符串中is的范围;

2.[s2 deleteCharactersInRange:range];//删除is字符串;

NSArray:表示一个OC数组,是一个不可变数组

//NSArray的创建

NSArray *array1 = [NSArray arrayWithObject:@"jack"];
// nil是数组元素结束的标记
NSArray *array2 = [NSArray arrayWithObjects:@"jack", @"rose", nil];
//快速创建一个NSArray对象

NSArray *array4 = @[@"jack", @"rose", @"4324324"];

//NSArray的元素个数
NSLog(@"%ld", array3.count);

//NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);

//快速访问
NSLog(@"%@", array3[0]);
}


1.NSArray的创建:
NSArray *array1 = [NSArray arrayWithObject:@“jack” ,“rose”,nil;]//这就表示创建了一个OC数组 里面有一个元素jack

  快速创建的方法:
NSArray *array2 = @[p,@“jack”]//p使我们创建的对象;
//nil是表示前面的是数组的元素作为结束标志;

2.NSArray的元素个数:
array.count == [array count];就像是调用方法;

NSArray中元素的访问:
跟c语言中的数组访问一样 array[0],表示第一个元素;

遍历数组:
1.for int i = 0 ;i<array.count;i++{
     NSLog(@“%@”,array[i]);
   }
2.for (id obj in array)
  {
  //找出obj元素在数组中的位置;
  NSUIntege i= [array indexOfObject:obj];
 NSLog(@“%ld - %@”,i,obj);
  }
3.[array enumerateObjectsUsingBlock]:
   ^(id obj,NSUInteger  idx,BOOL *stop)
  {
    NSLog(@“%ld - %@”,idx,obj);
  
   }

NSMutableArray:NSArray的子类 是一个不可变数组

// @[] 只创建不可变数组NSArray

// 常见错误写法
NSMutableArray *array = @[@"jack", @"rose"];
[array addObject:@"jim"];//因为快速创建的NSArrray是不可变的

// 可变数组的基本使用
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];

// 添加元素
[array addObject:[[Person alloc] init]];
[array addObject:@"jack"];

// 删除元素
[array removeAllObjects];

// 删除指定的对象
[array removeObject:@"jack"];
[array removeObjectAtIndex:0];

// 错误写法
// [array addObject:nil]; //nil是NSArray的结束标志


NSDictionary:表示OC中的不可变字典:

//字典的定义
//NSDictionary定义一个键值对
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
//NSDictionary定义多个键值对
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"北京", @"address",
@"32423434", @"qq", nil];
//快速定义字典(只能用于不可变字典)
NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};

//字典的键值对获取
id obj = dict[@"name"];


NSMutableDictionary:NSDictionary的子类 是一个可变字典

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"北京" forKey:@"address"];

// 移除键值对
[dict removeObjectForKey:(id)];

// 字典不允许有相同的key,但允许有相同的value(Object)
// 字典的无序的
NSDictionary *dict = @{
@"address" : @"北京",
@"name" : @"jack",
@"name2" : @"jack",
@"name3" : @"jack",
@"qq" : @"7657567765"};

//打印所有的字典的键值对
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);

// *stop = YES;
}];


NSNumber

1.将各种基本数据类型包装成NSNumber对象.

// 将age变量包装成NSNumber对象
int age = 100;
@(age);
//[NSNumber numberWithInt:age];

//将基本数据类型包装成NSNumber对象
NSNumber *num = [NSNumber numberWithInt:10];
NSNumber *n = [NSNumber numberWithDouble:10.5];


2.将NSNumber对象转化成基本数据类型

//将NSNumber对象转为基本数据类型
//转为int
int a = [number intValue];

//转为double
double d = [number doubleValue];

3.将基本数据类型快速包装成NSNumber对象

// 将各种基本数据类型包装成NSNumber对象
@10.5;
@YES;
@'A'; // NSNumber对象

//注意@'A'和@"A"的区别
@"A"; // NSString对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: