Foundation框架之NSString和NSArray
2015-11-20 15:09
246 查看
什么是框架:
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。在OS X下的Mac操作系统中大
约有80个框架为所有程序开发奠定基础的框架称为Foundation框架
Foundation框架的作用:
Foundation看框架是Mac\IOS中其他框架的基础
Foundation框架包含了很多开发中常用的数据类型:结构体枚举 类
如何使用Foundation框架:
包含它的主文件即可:#import <Foundation/Foundation.h>
一、NSString字符串
1.概念:一个NSString对象代表一个字符串(文字内容),也称NSString为字符串类
2.NSString字符串字符串比较
1)字符串依据排序顺序的不同,会有大小的差异。可以用对象方法 compare 来在两个NSString对象之间比较
截取:
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。在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: -12)判断是否相等,用对象方法
- (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 ? 03)字符串查找
- (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:34)字符串的截取和替换
截取:
- (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"); }
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- NSString与C字符串之间的相互转换
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- 全面解析Objective-C中的block代码块的使用
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)