版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.08.26 |
前言
NSArray
是集合類型中的一種榔组,是OC中很重要的概念,這個(gè)是我們一定會(huì)用到的對(duì)象联逻,下面我就繼續(xù)由整體到細(xì)節(jié)瓷患,由簡(jiǎn)單到復(fù)雜的和大家說一下它的用法。感興趣的可以看我寫的上篇幾篇遣妥。
1. NSArray簡(jiǎn)單細(xì)說(一)—— 整體了解
2. NSArray簡(jiǎn)單細(xì)說(二)—— 數(shù)組的創(chuàng)建
3. NSArray簡(jiǎn)單細(xì)說(三)—— 數(shù)組初始化
4. NSArray簡(jiǎn)單細(xì)說(四)—— 數(shù)組的查詢與檢索
5. NSArray簡(jiǎn)單細(xì)說(五)—— 數(shù)組中對(duì)象的查找
6. NSArray簡(jiǎn)單細(xì)說(六)—— 向數(shù)組中元素發(fā)送消息
7. NSArray簡(jiǎn)單細(xì)說(七)—— 數(shù)組的比較和獲得新數(shù)組
8. NSArray簡(jiǎn)單細(xì)說(八)—— 數(shù)組的排序
一擅编、- (NSString *)componentsJoinedByString:(NSString *)separator;
該方法的作用就是:數(shù)組轉(zhuǎn)化為字符串,構(gòu)造并返回一個(gè)NSString對(duì)象,該對(duì)象是在數(shù)組元素之間插入給定的分隔符的結(jié)果爱态。
這里還要注意:
-
NSString
對(duì)象谭贪,它是在數(shù)組元素之間插入分隔符的結(jié)果。 如果數(shù)組沒有元素锦担,則返回一個(gè)表示空字符串的NSString對(duì)象俭识。 - 例如,這段代碼摘錄將
"here be dragons"
寫入控制臺(tái):
NSArray *pathArray = [NSArray arrayWithObjects:@"here", @"be", @"dragons", nil];
NSLog(@"%@",[pathArray componentsJoinedByString:@" "]);
- 數(shù)組中的每個(gè)元素都必須處理描述洞渔。
下面我們看一個(gè)簡(jiǎn)單的例子
- (void)demoComponentsJoinedByString
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = [arr componentsJoinedByString:@"--"];
NSLog(@"resultStr = %@", resultStr);
}
下面看輸出結(jié)果
2017-08-26 09:49:32.998 JJOC[1148:19901] resultStr = 6--9--2--1
結(jié)論:就是這么簡(jiǎn)單套媚。
二、@property(readonly, copy) NSString *description;
該屬性的作用就是:表示數(shù)組內(nèi)容的字符串磁椒,格式為屬性列表堤瘤。
- (void)demoDescription
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = arr.description;
NSLog(@"resultStr = %@", resultStr);
}
下面看輸出結(jié)果
2017-08-26 09:52:38.072 JJOC[1309:23192] resultStr = (
6,
9,
2,
1
)
結(jié)論:很簡(jiǎn)單,沒什么好說的浆熔。
三本辐、- (NSString *)descriptionWithLocale:(id)locale;
該方法的作用就是:返回一個(gè)字符串,表示數(shù)組的內(nèi)容医增,格式為屬性列表慎皱。
看一下參數(shù)和返回值:
-
locale
:一個(gè)NSLocale
對(duì)象或NSDictionary
對(duì)象,它指定用于格式化每個(gè)數(shù)組元素(用于識(shí)別)的選項(xiàng)叶骨。 如果不想要格式化元素茫多,請(qǐng)指定nil。 -
return
:表示數(shù)組內(nèi)容的字符串忽刽,格式為屬性列表天揖。
還有幾點(diǎn)注意:
- 有關(guān)如何將語言環(huán)境應(yīng)用于接收數(shù)組中的每個(gè)元素的說明,請(qǐng)參閱
descriptionWithLocale:indent :
缔恳。
下面看一個(gè)簡(jiǎn)單例子
- (void)demoDescriptionWithLocale
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = [arr descriptionWithLocale:nil];
NSLog(@"resultStr = %@", resultStr);
}
下面看輸出結(jié)果
017-08-26 09:58:39.579 JJOC[1539:29886] resultStr = (
6,
9,
2,
1
)
結(jié)論:還算好理解吧。
四洁闰、- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level;
該方法的作用是:返回一個(gè)字符串歉甚,表示數(shù)組的內(nèi)容,格式為屬性列表扑眉。
下面看一下參數(shù)和返回值:
-
locale
:一個(gè)NSLocale
對(duì)象或NSDictionary
對(duì)象纸泄,它指定用于格式化每個(gè)數(shù)組元素(用于識(shí)別)的選項(xiàng)。 如果不想要格式化元素腰素,請(qǐng)指定nil聘裁。 -
level
:縮進(jìn)級(jí)別,使輸出更可讀:將級(jí)別設(shè)置為0以使用四個(gè)空格縮進(jìn)弓千,或1使用制表符字符縮進(jìn)輸出衡便。
還有幾點(diǎn)需要注意:
- 返回的NSString對(duì)象包含每個(gè)數(shù)組元素的字符串表示形式,按順序從頭到尾。 要獲取給定元素的字符串表示形式镣陕,
descriptionWithLocale:indent:
如下進(jìn)行:- 如果該元素是一個(gè)NSString對(duì)象谴餐,那么就按原樣使用。
- 如果元素響應(yīng)
descriptionWithLocale:indent:
呆抑,則調(diào)用該方法來獲取元素的字符串表示形式岂嗓。 - 如果元素響應(yīng)
descriptionWithLocale:
,則調(diào)用該方法來獲取元素的字符串表示形式鹊碍。 - 如果沒有滿足上述條件厌殉,則通過調(diào)用其
description
方法來獲得元素的字符串表示。
下面看一個(gè)簡(jiǎn)單例子
- (void)demoDescriptionWithLocaleIndent
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
NSString *resultStr = [arr descriptionWithLocale:[NSLocale currentLocale] indent:0];
NSLog(@"resultStr = %@", resultStr);
}
看輸出結(jié)果
2017-08-26 10:14:59.132 JJOC[1881:41243] resultStr = (
6,
9,
2,
1
)
結(jié)論:我基本不用侈咕。
五公罕、- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
該方法的作用就是:將數(shù)組的內(nèi)容寫在給定路徑的文件中。
下面看一下參數(shù)和返回值:
-
path
:寫入數(shù)組內(nèi)容的路徑乎完。如果路徑包含波形符號(hào)(?)熏兄,則在調(diào)用此方法之前,必須使用stringByExpandingTildeInPath
進(jìn)行擴(kuò)展树姨。 - 如果是摩桶,陣列將被寫入輔助文件,然后將輔助文件重命名為路徑帽揪。 如果否硝清,數(shù)組直接寫入路徑。 YES選項(xiàng)保證路徑(如果存在)將不會(huì)被破壞转晰,即使系統(tǒng)在寫入時(shí)應(yīng)該崩潰芦拿。
-
return
:成功YES,失敗NO查邢。
這里還要注意:
- 如果數(shù)組的內(nèi)容都是屬性列表對(duì)象
(NSString蔗崎,NSData艘希,NSArray或NSDictionary對(duì)象)
侮腹,則使用此方法編寫的文件可以使用類方法arrayWithContentsOfFile
或?qū)嵗椒?code>initWithContentsOfFile:初始化新數(shù)組。 該方法在寫出文件之前遞歸地驗(yàn)證所有包含的對(duì)象是屬性列表對(duì)象看峻,如果所有對(duì)象都不是屬性列表對(duì)象邓深,則返回NO未桥,因?yàn)樯傻奈募皇怯行У膶傩粤斜怼?/li>
下面看一個(gè)簡(jiǎn)單例子。
- (void)demoWriteToFile
{
NSArray *arr = @[@"6", @"9", @"2", @"1"];
BOOL result = [arr writeToFile: @"/Users/lucy/Desktop/1.txt" atomically:NO];
NSLog(@"result = %d", result);
}
我在桌面上新建立一個(gè)1.txt文件芥备,并將數(shù)組內(nèi)容寫進(jìn)去冬耿,下面我們看一下寫的結(jié)果。
結(jié)論:工程實(shí)踐中一般都是寫入到沙盒文件萌壳。
六亦镶、- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
該方法的作用就是:將數(shù)組的內(nèi)容寫入給定URL指定的位置日月。
下面看一下參數(shù)和返回值:
-
url
:輸入寫入的地址。 -
atomically
:如果是染乌,數(shù)組將被寫入輔助位置山孔,然后將輔助位置重命名為aURL。 如果否荷憋,則將陣列直接寫入aURL台颠。 YES選項(xiàng)確保aURL(如果存在)將不會(huì)損壞,即使系統(tǒng)在寫入過程中崩潰勒庄。 -
return
:成功YES串前,失敗NO。
還要注意:
- 如果數(shù)組的內(nèi)容都是屬性列表對(duì)象
(NSString实蔽,NSData荡碾,NSArray或NSDictionary對(duì)象)
,則此方法寫入的位置可用于使用類方法arrayWithContentsOfURL
或?qū)嵗椒?code>initWithContentsOfURL:初始化新數(shù)組局装。
結(jié)論:簡(jiǎn)單坛吁。
后記
未完,待續(xù)~~~