您的位置:首页 > 移动开发 > Objective-C

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对象之间比较
- (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");
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息