2012-08-30 20 views
0

我有一個NSArray,其中每個對象都包含一個名爲Card的特定類。卡片有一個描述方法。我想用描述方法的輸出連接數組中的所有對象,用空格分隔。有沒有簡單的做到這一點,沒有手動迭代NSArray和操作NSString從每個NSArray項目的描述方法構造NSString?

類似於以下構成代碼的東西?

NSArray *myArray = getCards(); // fetches 10 items or more 
NSString *myString = [myArray joinUsingDescriptionMethodSeparatedBy:@" "]; 

NSString *myString = [NSString stringFromArrayDescriptionMethods:myArray separatedBy:@" "]; 

當然,我可以實現這個自己,但我懷疑有可能是一些已經存在的這樣做了。

+0

側面說明:可能要改變你的方法名,' - [NSObject的描述]'存在。 – justin

+0

確實 - 這是我想要使用的現有描述方法! –

+0

哈哈 - 我對「卡片有描述方法」有印象。您隱藏了現有的debugger-print-string方法。沒關係! :) – justin

回答

2

我不認爲有這樣的方法。您也可以在NSString的類別中實現它。

對不起,我發現這一點:

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""]; 

從文檔:

構造並返回一個NSString對象是 夾着陣列的元件之間的給定隔板的結果。

- (NSString *)componentsJoinedByString:(NSString *)separator 
+0

componentsJoinedByString正是我想要的......我沒有意識到它會自動使用描述方法的輸出。 –

+0

obj-c中的'description'等價於許多語言的'toString'。這是當您嘗試打印或記錄對象時會被調用的方法 – jere

0

這樣做對每個項目的NSArray的描述方法:

NSMutableString * result = [[NSMutableString alloc] init]; 
for (NSObject * obj in array) 
{ 
    [result appendString:[NSString stringWithFormat:@" %@"[obj description]]]; 
} 
NSLog(@"The concatenated string is %@", result); 
+0

這種方法是我想要避免的 - 這是一個常見任務,我認爲必須已經存在API方法來執行我想要的操作。 –