Cocoa中NSString到NSDate的處理

2021-06-07 01:03:57 字數 1803 閱讀 7635

nsdate是ns類庫中基礎型別之一。隨著數位化發展,程式對資料處理量越來越大,我們經常從伺服器取得的日期是字串序列,格式化為正確的date型別是乙個不可避免的工作。在cocoa程式裡提供了非常方便的函式和類,但是仍然需要我們了解一些技巧。尤其是當我們的程式面對大量的日期字串轉換的時候,要格外的注意。蘋果文件中使用nsdateformatter類格式化日期字串,但是以防讀者不知道,我這裡提一下:它的速度非常慢!!這篇文章介紹如何處理這種情況。

123

4567

89

-

(nsdate*)

datefromstring:

(nsstring*)

string

由於nsdateformatter內部**原因,所以格式化字串代價很大。對於個別地方使用它做日期轉換是非常方便的,但是如果是放在乙個大的迴圈內部,直接使用nsdateformatter絕對不是明智的選擇。它很有可能成為拖慢你程式速度的元凶。

其實如果你知道你的程式將會取得什麼格式的日期字串,那麼直接分解字串後利用nscalendar和nsdatecomponents可以提高速度很多。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

50

-

(nsdate*)

mydatefromstring:

(nsstring*)

string

;@try

@catch

(n***ception

*exception

)@finally

return

[gregorian

datefromcomponents:

comps];}

如果要更快,就需要拋棄objc,編寫c**格式化時間字串。如下**經過測試是最快的。

123

4567

891011

-

(nsdate*)

datefromstring:

(nsstring*)

string

下面是我簡單測試迴圈10000次解析日期字串的時間比較。

123

2012-05

-0515:

57:51.942

timetest

[18488

:707

]1.991521

//第一種

2012-05

-0515:

57:52.096

timetest

[18488

:707

]0.921144

//第二種

2012-05

-0515:

57:54.088

timetest

[18488

:707

]0.153897

//第三種

objective c中的NSString操作

1 建立常量字串。nsstring astring this is a string 2 建立空字串,給予賦值。nsstring astring nsstring alloc init astring this is a string nslog astring astring astring re...

OC中NSString的操作

1.比較字元 bool result astring01 isequaltostring astring02 1 搜尋字元 nsrange range source rangeofstring 返回值為nsrange,其有兩個引數 location length 若子字串中包含搜尋字元,則返回返回r...

NSString中的數字問題

在寫學生管理系統的時候,需要判斷student類中 學生姓名中是否有數字,學號 年齡 成績是否全為數字,而在定義時把它們都設為了nsstring,所以需要從nsstring中提取出,或判斷出數字。用於判斷學生姓名 用來判斷姓名和班級 是否含有數字 nscharacterset characterse...