Ada juga varian ini, jika array asli Anda berisi objek Key-Value dari mana Anda hanya ingin memilih satu properti (yang dapat diserialisasi sebagai string):
@implementationNSArray(itertools)-(NSMutableString*)stringByJoiningOnProperty:(NSString*)property separator:(NSString*)separator
{NSMutableString*res =[@"" mutableCopy];
BOOL firstTime = YES;for(NSObject*obj in self){if(!firstTime){[res appendString:separator];}else{
firstTime = NO;}
id val =[obj valueForKey:property];if([val isKindOfClass:[NSStringclass]]){[res appendString:val];}else{[res appendString:[val stringValue]];}}return res;}@end
Ada kebocoran memori dalam kode Anda, mutableCopy mempertahankan objek yang sedang disalin, maka Anda harus mengembalikan [res autorelease] di akhir. Juga tidak ada alasan untuk melakukan mutablecopy bukan hanya membuat mutablestring langsung dari kelelawar.
thewormsterror
@thewormsterror: lupa menyebutkan kode ini untuk ARC. Selain itu, panggilan mutablecopy adalah konvensi objektif-c modern untuk membuat versi objek yang dapat diubah menggunakan @ -syntax (seperti [@ [] mutablecopy] untuk nsarray yang dapat diubah). tidak tahu apa bedanya itu membuat kinerja bijaksana.
Jawaban:
Ini kebalikan dari
-[NSString componentsSeparatedByString:]
.sumber
-componentsJoinedByString:
pada NSArray harus melakukan trik.sumber
Ada juga varian ini, jika array asli Anda berisi objek Key-Value dari mana Anda hanya ingin memilih satu properti (yang dapat diserialisasi sebagai string):
sumber