关闭

Foundation框架之NSString和NSArray

标签: objective-cNSStringNSArray
117人阅读 评论(0) 收藏 举报
分类:

什么是框架:

            框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。在OS X下的Mac操作系统中大

            约有80个框架为所有程序开发奠定基础的框架称为Foundation框架

  Foundation框架的作用:

    Foundation看框架是Mac\IOS中其他框架的基础

    Foundation框架包含了很多开发中常用的数据类型:结构体枚举 

  如何使用Foundation框架:

    包含它的主文件即可:#import <Foundation/Foundation.h>


一、NSString字符串

1.概念:一个NSString对象代表一个字符串(文字内容),也称NSString为字符串类

2.NSString字符串字符串比较

1)字符串依据排序顺序的不同,会有大小的差异。可以用对象方法 compare 来在两个NSString对象之间比较

- (NSComparisonResult)compare:(NSString *)string;
例如:
NSLog(@"%@ compare to %@: %ld", str1, str3, [str1 compare:str3]);
//比较两个字符串的内容大小。比较方法:逐个地将字符的ASCII值进行比较,比较结果为NSComparisonResult
//输出结果:abc compare to jack: -1
2)判断是否相等,用对象方法
- (BOOL)isEqualToString:(NSString *)aString;
例如:
NSString *str1 = @"abc";
NSString *str3 = [NSString stringWithFormat:@"%@", @"abc"];

NSLog(@"%@ equal %@? %d", str1, str3, [str1 isEqualToString:str3]);
//两个字符串的内容(不是地址)相比较,区分大小写,相同则返回YES,反正返回NO
NSLog(@"%@ == %@ ? %d", str1, str3, str1 == str3);
//"=="比较的是地址。

//输出结果:
abc equal abc? 1
abc == abc ? 0
3)字符串查找
- (NSRange)rangeOfString:(NSString *)aString;
例如:
NSString *str8 = @"https://www.baidu.com";
NSRange range = [str8 rangeOfString:@"www"];
NSLog(@"range.loc:%ld, range.len:%ld", range.location, range.length);
//运行结果:range.loc:8, range.len:3
4)字符串的截取和替换

截取:

- (NSString *)substringFromIndex:(NSUInteger)from;
//从指定位置from(包含from)的字符开始,到尾部
- (NSString *)substringToIndex:(NSUInteger)to;
//从开头开始,截到指定位置to(不包含to)的位置
- (NSString *)substringWithRange:(NSRange)range;
//按照给出的范围range从字符串中截取子串
替换:
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0);
//在字符串中,用replacement去替换所有的target。
例如:
NSString *str8 = @"https://www.baidu.com";
NSLog(@"%@", [str8 stringByReplacingOccurrencesOfString:@"." withString:@"-"]);
//运行结果:https://www-baidu-com
二、NSArray
//类方法
+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
//需要以 nil 作最后一个元素
+ (instancetype)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
+ (instancetype)arrayWithArray:(NSArray *)array;
//从xml文件中读取
+ (NSArray *)arrayWithContentsOfFile:(NSString *)path;
+ (NSArray *)arrayWithContentsOfURL:(NSURL *)url;
//对象方法(即用在 alloc 创建的一个新NSArray对象上)
- (instancetype)initWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
- (instancetype)initWithArray:(NSArray *)array;
- (instancetype)initWithArray:(NSArray *)array copyItems:(BOOL)flag;
- (NSArray *)initWithContentsOfFile:(NSString *)path;
- (NSArray *)initWithContentsOfURL:(NSURL *)url;

<pre name="code" class="objc">NSArray *arr_1 = [NSArray array];           //不可变的空数组
 //数组不能存储nil,它是作为数组元素结束的标记。(类似'\0'作为C中字符数组结束的标记)
 NSArray *arr_2 = [NSArray arrayWithObjects:@"10", @"3.14", @"mark", nil];//只有两个元素
 // 2012年之后可以快速创建数组(推荐使用):
 NSArray *arr_3 = @[@"5", @"7.8", @"John"]; //不需要用 nil 结尾
 NSLog(@"%@", arr_3);
 // 输出结果:(
 // 10,
 // mark
 // )
 
 //  数组的基本操作
 //获取集合元素个数
 NSUInteger cou = [arr_2 count];                 // cou = 2
 
 //获取指定位置的元素
 NSString *obj = [arr_2 objectAtIndex:2];        // obj = @"mark"
 // 2012年可以用下标快速访问数组(推荐使用):
 NSString *obj_2 = arr_2[2];                     // 效果同上
 
 //是否包含某一个元素
 BOOL isCont = [arr_2 containsObject:obj];       // YES
 
 //返回最后一个元素
 NSString *lastObj = [arr_2 lastObject];         // lastObj = @"mark"
 
 //返回第一个元素
 NSString *firstObj = [arr_2 firstObject];       // firstObj = @"10"
 
 //查找某元素在数组中的位置(找不到则返回NSNotFound)
 NSUInteger idx = [arr_2 indexOfObject:@"3.14"]; //idx = 1
 
 //在指定范围内查找指定元素在数组中的位置(若范围超出数组则报错)
 NSUInteger idx_2 = [arr_2 indexOfObject:@"mark" inRange:NSMakeRange(1, 2)];
 // idx_2 = 2
 
 // NSArray数组的遍历
 // (1) 下标遍历
 for (int i = 0; i < arr_2.count; i++) {
 NSLog(@"%@", arr_2[i]);
 }
 
 // (2) for增强,快速遍历
 for (NSString *str in arr_2) {
 NSLog(@"%@", str);
 }
 
 // (3) block遍历(最快)
 // 参数:obj 为遍历到的元素,idx 为下标, stop 默认为NO,当在block中设置为YES,则遍历退出
 [arr_2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
 if (idx == 1) {
 *stop = YES;     // 只遍历到下标为1的元素
 }
 NSLog(@"元素:%@ 的下标:%lu", obj, idx);
 }];
 //输出结果:
 //元素:10 的下标:0
 //元素:3.14 的下标:1
 
 // NSArray数组与文件
 // (1) 写入文件 (与NSString数据的写入类似)
 // 生成 .plist 文件
 if ([arr_2 writeToFile:@"/Users/yons/Desktop/arr.plist" atomically:YES]) {
 NSLog(@"NSArray write to .plist file successfully");
 }


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2314次
    • 积分:186
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档