NSString *myArrayString = [self.selectedStates description]; // 包含 \n、()、空格
NSCharacterSet *charsToTrim = [NSCharacterSet characterSetWithCharactersInString:@"()\n\""];
myArrayString = [myArrayString stringByTrimmingCharactersInSet:charsToTrim];
// 結果仍含換行、空格:@"1, 2, 3, 4, 5, 6"
description 返回調試格式字串(含換行、縮進、括號),不適合業務處理。
// 直接用分隔符連接元素,無多餘字符
NSString *result = [self.selectedStates componentsJoinedByString:@","];
// 結果:@"1,2,3,4,5,6" (假設陣列元素為 @"1", @"2" ...)
// 陣列包含 NSNumber、自定義對象等
NSArray *mixedArray = @[@1, @2.5, @"three", @YES];
NSString *result = [mixedArray valueForKey:@"description"].componentsJoinedByString:@",");
// 或更安全:
NSMutableString *builder = [NSMutableString string];
[mixedArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (idx > 0) [builder appendString:@","];
[builder appendString:[obj description]];
}];
NSString *result = builder;
NSString *desc = [array description];
desc = [desc stringByReplacingOccurrencesOfString:@"\n" withString:@""];
desc = [desc stringByReplacingOccurrencesOfString:@" " withString:@""];
desc = [desc stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"()"]];
// 繁瑣且脆弱,極易因格式變化失效
componentsJoinedByString:** —— 語義清晰、高效、無副作用。description,它是調試輸出,格式不保證穩定。NSMutableString + enumerateObjectsUsingBlock: 完全可控。