版本记录
版本号 | 时间 |
---|---|
V1.0 | 2017.08.26 |
前言
NSArray
是集合类型中的一种,是OC中很重要的概念,这个是我们一定会用到的对象,下面我就继续由整体到细节,由简单到复杂的和大家说一下它的用法。感兴趣的可以看我写的上篇几篇。
1. NSArray简单细说(一)—— 整体了解
2. NSArray简单细说(二)—— 数组的创建
3. NSArray简单细说(三)—— 数组初始化
4. NSArray简单细说(四)—— 数组的查询与检索
5. NSArray简单细说(五)—— 数组中对象的查找
6. NSArray简单细说(六)—— 向数组中元素发送消息
7. NSArray简单细说(七)—— 数组的比较和获得新数组
8. NSArray简单细说(八)—— 数组的排序
一、- (NSString *)componentsJoinedByString:(NSString *)separator;
该方法的作用就是:数组转化为字符串,构造并返回一个NSString对象,该对象是在数组元素之间插入给定的分隔符的结果。
这里还要注意:
-
NSString
对象,它是在数组元素之间插入分隔符的结果。 如果数组没有元素,则返回一个表示空字符串的NSString对象。 - 例如,这段代码摘录将
"here be dragons"
写入控制台:
NSArray *pathArray = [NSArray arrayWithObjects:@"here", @"be", @"dragons", nil];
NSLog(@"%@",[pathArray componentsJoinedByString:@" "]);
- 数组中的每个元素都必须处理描述。
下面我们看一个简单的例子
- (void)demoComponentsJoinedByString
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = [arr componentsJoinedByString:@"--"];
NSLog(@"resultStr = %@", resultStr);
}
下面看输出结果
2017-08-26 09:49:32.998 JJOC[1148:19901] resultStr = 6--9--2--1
结论:就是这么简单。
二、@property(readonly, copy) NSString *description;
该属性的作用就是:表示数组内容的字符串,格式为属性列表。
- (void)demoDescription
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = arr.description;
NSLog(@"resultStr = %@", resultStr);
}
下面看输出结果
2017-08-26 09:52:38.072 JJOC[1309:23192] resultStr = (
6,
9,
2,
1
)
结论:很简单,没什么好说的。
三、- (NSString *)descriptionWithLocale:(id)locale;
该方法的作用就是:返回一个字符串,表示数组的内容,格式为属性列表。
看一下参数和返回值:
-
locale
:一个NSLocale
对象或NSDictionary
对象,它指定用于格式化每个数组元素(用于识别)的选项。 如果不想要格式化元素,请指定nil。 -
return
:表示数组内容的字符串,格式为属性列表。
还有几点注意:
- 有关如何将语言环境应用于接收数组中的每个元素的说明,请参阅
descriptionWithLocale:indent :
。
下面看一个简单例子
- (void)demoDescriptionWithLocale
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = [arr descriptionWithLocale:nil];
NSLog(@"resultStr = %@", resultStr);
}
下面看输出结果
017-08-26 09:58:39.579 JJOC[1539:29886] resultStr = (
6,
9,
2,
1
)
结论:还算好理解吧。
四、- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level;
该方法的作用是:返回一个字符串,表示数组的内容,格式为属性列表。
下面看一下参数和返回值:
-
locale
:一个NSLocale
对象或NSDictionary
对象,它指定用于格式化每个数组元素(用于识别)的选项。 如果不想要格式化元素,请指定nil。 -
level
:缩进级别,使输出更可读:将级别设置为0以使用四个空格缩进,或1使用制表符字符缩进输出。
还有几点需要注意:
- 返回的NSString对象包含每个数组元素的字符串表示形式,按顺序从头到尾。 要获取给定元素的字符串表示形式,
descriptionWithLocale:indent:
如下进行:- 如果该元素是一个NSString对象,那么就按原样使用。
- 如果元素响应
descriptionWithLocale:indent:
,则调用该方法来获取元素的字符串表示形式。 - 如果元素响应
descriptionWithLocale:
,则调用该方法来获取元素的字符串表示形式。 - 如果没有满足上述条件,则通过调用其
description
方法来获得元素的字符串表示。
下面看一个简单例子
- (void)demoDescriptionWithLocaleIndent
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = [arr descriptionWithLocale:[NSLocale currentLocale] indent:0];
NSLog(@"resultStr = %@", resultStr);
}
看输出结果
2017-08-26 10:14:59.132 JJOC[1881:41243] resultStr = (
6,
9,
2,
1
)
结论:我基本不用。
五、- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
该方法的作用就是:将数组的内容写在给定路径的文件中。
下面看一下参数和返回值:
-
path
:写入数组内容的路径。如果路径包含波形符号(〜),则在调用此方法之前,必须使用stringByExpandingTildeInPath
进行扩展。 - 如果是,阵列将被写入辅助文件,然后将辅助文件重命名为路径。 如果否,数组直接写入路径。 YES选项保证路径(如果存在)将不会被破坏,即使系统在写入时应该崩溃。
-
return
:成功YES,失败NO。
这里还要注意:
- 如果数组的内容都是属性列表对象
(NSString,NSData,NSArray或NSDictionary对象)
,则使用此方法编写的文件可以使用类方法arrayWithContentsOfFile
或实例方法initWithContentsOfFile
:初始化新数组。 该方法在写出文件之前递归地验证所有包含的对象是属性列表对象,如果所有对象都不是属性列表对象,则返回NO,因为生成的文件不是有效的属性列表。
下面看一个简单例子。
- (void)demoWriteToFile
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
BOOL result = [arr writeToFile: @"/Users/lucy/Desktop/1.txt" atomically:NO];
NSLog(@"result = %d", result);
}
我在桌面上新建立一个1.txt文件,并将数组内容写进去,下面我们看一下写的结果。
结论:工程实践中一般都是写入到沙盒文件。
六、- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
该方法的作用就是:将数组的内容写入给定URL指定的位置。
下面看一下参数和返回值:
-
url
:输入写入的地址。 -
atomically
:如果是,数组将被写入辅助位置,然后将辅助位置重命名为aURL。 如果否,则将阵列直接写入aURL。 YES选项确保aURL(如果存在)将不会损坏,即使系统在写入过程中崩溃。 -
return
:成功YES,失败NO。
还要注意:
- 如果数组的内容都是属性列表对象
(NSString,NSData,NSArray或NSDictionary对象)
,则此方法写入的位置可用于使用类方法arrayWithContentsOfURL
或实例方法initWithContentsOfURL:
初始化新数组。
结论:简单。
后记
未完,待续~~~