Eu estou querendo saber como converter um NSArray [@"Apple", @"Pear ", 323, @"Orange"]
em uma seqüência de caracteres em Objective-C .
Eu estou querendo saber como converter um NSArray [@"Apple", @"Pear ", 323, @"Orange"]
em uma seqüência de caracteres em Objective-C .
Respostas:
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
[array description]
insere novas linhas e os parênteses externos.
NSString * myString = [array componentsJoinedByString:@""];
um substituto aceitável para isso?
<ClassName: InstanceAddress>
. O valueForKey
faz recuperar a propriedade especificada para cada item. Nesse caso, description
é uma NSString *
propriedade de NSObject
cujo getter pode ser substituído por suas subclasses.
Uma abordagem seria iterar sobre a matriz, chamando a description
mensagem em cada item:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
[result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);
Outra abordagem seria fazer algo com base na classe de cada item:
NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
if ([obj isKindOfClass:[NSNumber class]])
{
// append something
}
else
{
[result appendString:[obj description]];
}
}
NSLog(@"The concatenated string is %@", result);
Se você deseja vírgulas e outras informações estranhas, basta:
NSString * result = [array description];
-description
) e concat-los depois que o uso -componentsJoinedByString:
de @""
como o parâmetro.
Acho que a resposta de Sanjay estava quase lá, mas eu a usei dessa maneira
NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);
Resultado :
2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World
Como Sanjay havia sugerido - usei os componentes do métodoJoinedByString do NSArray que faz junção e devolve o NSString
O NSString possui o método reverso componentsSeparatedByString que faz a divisão e devolve o NSArray .
Recentemente, eu encontrei um ótimo tutorial sobre Objective-C Strings:
http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/
E pensei que isso poderia ser interessante:
Se você deseja dividir a sequência em uma matriz, use um método chamado componentsSeparatedByString para conseguir isso:
NSString *yourString = @"This is a test string";
NSArray *yourWords = [myString componentsSeparatedByString:@" "];
// yourWords is now: [@"This", @"is", @"a", @"test", @"string"]
se você precisar dividir um conjunto de vários caracteres diferentes, use os componentes do NSStringSeparatedByCharactersInSet:
NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@"-/"]
];
// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]
Observe, no entanto, que a sequência separadora não pode ficar em branco. Se você precisar separar uma string em seus caracteres individuais, faça um loop pelo comprimento da string e converta cada caractere em uma nova string:
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
NSString *ichar = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
[characters addObject:ichar];
}
NSString * str = [componentsJoinedByString:@""];
e você tem matriz dic ou múltipla e depois usou abaixo
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];
A primeira linha inicializa uma matriz com objetos. A segunda linha une todos os elementos dessa matriz adicionando a string dentro do "" e retorna uma string.
Solução Objective C
NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"]; // "1-2-3"
Quem procura uma solução em Swift
Se a matriz contiver cadeias, você poderá usar o método de junção da Cadeia:
var array = ["1", "2", "3"]
let stringFromArray = "-".join(array) // "1-2-3"
No Swift 2:
var array = ["1", "2", "3"]
let stringFromArray = array.joinWithSeparator("-") // "1-2-3"
Em Swift 3 e 4
var array = ["1", "2", "3"]
let stringFromArray = array.joined(separator: "-") // "1-2-3"