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

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对象







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值