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

来源:互联网 发布:多益网络 收入 编辑:程序博客网 时间:2024/05/22 06:53
Foundation中的类:

NSString:不可变字符串:


字符串的创建方式:
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:可变字符串;


对比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数组,是一个不可变数组


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的子类 是一个不可变数组


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


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


NSNumber

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

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

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








0 0
原创粉丝点击