2011-11-14 76 views
9

的陣列更好的辦法我有一個NSArrayNSNumbers,我想將其轉換爲的NSStringsNSArray,通過讓每個NSNumberstringValue第一陣列英寸到的NSArray轉換NSNumbers到NSString的

我想到的方法是迭代第一個值中的每個值,獲取其字符串值並將其添加到另一個數組中。但是應該有一個更優雅的解決方案。你知道嗎?

+4

我認爲你的解決方案是最優雅的:-)因爲它簡單明瞭 – Victor

+1

如果你做出的努力不僅僅是尋找比3行代碼更好的解決方案,那麼你就有了太多的免費時間。 – morningstar

+3

@morningstar::)實際上我沒有那麼多時間,情況恰恰相反,但有時框架提供了令人敬畏的方法,你會後悔不知道他們。我喜歡找出那些如果有的話。 – aslisabanci

回答

31

NSArray以這樣一種方式實現了Key-Value Coding方法valueForKey:它返回一個新的數組。新數組包含詢問原始數組中每個對象的指定值的結果。在這種情況下,NSNumberstringValue,因此,所有你需要做的就是:

NSArray * b = [a valueForKey:@"stringValue"]; 

普通老式快速列舉(或enumerateObjectsUsingBlock:)不會是一個可怕的解決方案,但。 NSArray的實現valueForKey:很可能在內部使用for循環,任何稍後閱讀它的人都會很容易理解這一點。

+0

哇,真的嗎?它看起來很虐待,但它也很棒。 – jbat100

+4

沒有辱罵 - 相當習慣國際海事組織。 stringValue是NSNumber類的有效屬性,NSArray的valueForKey:有意設計爲允許以這種方式轉換數組。這正是我想寫的東西,無論什麼值得。 – Chuck

+0

我確認它的工作原理,+1 ... – jbat100