2014-10-12 127 views
0

我剛剛通過Apple的iOS開發教程,並閱讀了基礎框架和值對象的章節。什麼時候你會使用NSNumber文字來創建封裝字符值?

剛上的NSNumber類,它說:

你甚至可以使用的NSNumber文字創建封裝布爾和 字符值。

NSNumber * myBoolValue = @YES; NSNumber * myCharValue = @'V';

我只是想知道,什麼時候,或者爲什麼,或者在什麼情況下,你想使用NSNumber而不是使用NSString來表示字符值呢?

+0

爲什麼不呢?僅僅因爲這可能並不意味着你必須使用它,但可能會出現一些有用的奇怪場景。 (並且'@ YES'對於設置JSON中的布爾值非常有用。) – 2014-10-12 14:28:48

+0

我很想知道這些奇怪的場景可能是什麼。感謝您關注JSON。 – cheznead 2014-10-12 14:58:02

+0

我不知道什麼時候可能需要一個NSNumber字符值爲Unicode'V',但如果有人確實需要它,它會在那裏。我可以發明一種情況,例如,用一個NSArray來保存字符串的字符,但我不知道可能需要什麼。 – 2014-10-12 18:35:59

回答

2

一個NSNumber是要被插入到目標C的集合類如NSArray的,NSSet中,的NSDictionary等

圖片的場景下你想遍歷每個字符以ASCII用於封裝的原始值有用字符串並提取一組使用的元音。您可以評估每個字符並將其添加到NSMutableSet。爲此,您需要將每個字符封裝在一個NSNumber中,因爲NSMutableSet需要一個Objective-C對象。這只是一個例子,但這個概念適用於需要將原語添加到集合中的許多情況。

+0

是的,最難的部分是思考需要* literal * NSNumber char值的場景。你的元音情況下的哈希集可能是這樣的情況。 – 2014-10-12 18:38:08

-1

可以使用的NSNumber與字符返回其ASCII碼,所以V將返回86

我想沒有多少人使用它那麼多,但你可能會使用它的字符驗證。我認爲這只是蘋果去的其中一件事,是的,讓我們把它放在一邊。

它真的沒有用於其他許多。 @YES和@NO與YES和NO相同,所以它在某些地方還不夠雅緻。

+0

Proto,你認爲'字符驗證'是什麼意思?你是否也意味着在使用布爾值時不需要使用文字或使用@符號? – cheznead 2014-10-12 14:56:32

+0

這些都不是真實的陳述。 @'V',@ YES和@ NO提供NSNumber的實例,它們不等於它們的原始對應物。 (自StackExchange應用程序認爲我試圖提及某人以來添加的空間。)爲了演示此操作,請嘗試將NO添加到數組中。它不會起作用,因爲NO與nil類似,您不能將一個零對象添加到數組中。然而,添加@ NO會很好地工作。另外,要獲得一個字母的ASCII值,只需使用(int)charName而不是調用[@'V'intValue]來轉換它就會更有意義。 – 2014-10-12 17:50:52

+0

爲什麼@NO在那裏工作?因爲它直接聲明爲一個obj-c對象? – cheznead 2014-10-12 20:58:57

2

嘛,一個情況是,你正在使用KVC設置一個鍵的值,屬性類型爲char

[object setValue:@'a' forKey:someCharPropertyName]; 
相關問題