NSArray簡(jiǎn)單細(xì)說(九)—— 數(shù)組成員操作屈藐、創(chuàng)建描述與數(shù)組的存儲(chǔ)

版本記錄

版本號(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é)果

結(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ù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铐尚,一起剝皮案震驚了整個(gè)濱河市拨脉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宣增,老刑警劉巖玫膀,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異爹脾,居然都是意外死亡帖旨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門灵妨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來解阅,“玉大人,你說我怎么就攤上這事泌霍』醭” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵烹吵,是天一觀的道長碉熄。 經(jīng)常有香客問我桨武,道長肋拔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任呀酸,我火速辦了婚禮凉蜂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己窿吩,他們只是感情好茎杂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纫雁,像睡著了一般煌往。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轧邪,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天刽脖,我揣著相機(jī)與錄音,去河邊找鬼忌愚。 笑死曲管,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的硕糊。 我是一名探鬼主播院水,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼简十!你這毒婦竟也來了檬某?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤勺远,失蹤者是張志新(化名)和其女友劉穎橙喘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胶逢,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厅瞎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了初坠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片和簸。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碟刺,靈堂內(nèi)的尸體忽然破棺而出锁保,到底是詐尸還是另有隱情,我是刑警寧澤半沽,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布爽柒,位于F島的核電站,受9級(jí)特大地震影響者填,放射性物質(zhì)發(fā)生泄漏浩村。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一占哟、第九天 我趴在偏房一處隱蔽的房頂上張望心墅。 院中可真熱鬧酿矢,春花似錦、人聲如沸怎燥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铐姚。三九已至策肝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間隐绵,已是汗流浹背驳糯。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氢橙,地道東北人酝枢。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像悍手,于是被迫代替她去往敵國和親帘睦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容