Преобразование NSArray в NSString в Objective-C

Мне интересно, как преобразовать NSArray [@"Apple", @"Pear ", 323, @"Orange"] в строку С.

8 ответов


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

одним из подходов было бы перебирать массив, вызывая description сообщение по каждому пункту:

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

другой подход мог бы сделать что-то на основе класса каждого элемента:

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);

если вы хотите запятые и другую постороннюю информацию, вы можете просто сделать:

NSString * result = [array description];

Я думаю, что ответ Санджая был почти там, но я использовал его таким образом

NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);

выход :

2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World

Как намекнул Санджай - я использовал метод componentsJoinedByString от NSArray, который делает присоединение и возвращает вам NSString

кстати NSString есть обратный метод componentsSeparatedByString что делает расщепление и дает вам NSArray обратно .


недавно я нашел действительно хороший учебник по Objective-C Strings:

http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/

и я подумал, что это может быть интересно:

Если вы хотите разделить строку на массив, используйте метод componentsSeparatedByString для достижения этого:

NSString *yourString = @"This is a test string";
    NSArray *yourWords = [myString componentsSeparatedByString:@" "];

    // yourWords is now: [@"This", @"is", @"a", @"test", @"string"]

Если вам нужно разделить набор из нескольких разных символов, используйте NSString componentsSeparatedByCharactersInset:

NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
                  [NSCharacterSet characterSetWithCharactersInString:@"-/"]
                ];

// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]

обратите внимание, однако, что строка разделителя не может быть пустой. Если вам нужно разделить строку на отдельные символы, просто выполните цикл по длине строки и преобразуйте каждый символ в новую строку:

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:@""];

и у вас есть dic или несколько массивов, а затем используется ниже

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

NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];

первая строка инициализирует массив с объектами. Вторая строка объединяет все элементы этого массива, добавляя строку внутри "" и возвращает строку.


путь, который я знаю, прост.

var NSArray_variable = NSArray_Object[n]
var stringVarible = NSArray_variable as String

n - внутренняя позиция в массиве Это на языке SWIFT. Это может сработать в С


решение Swift 3.0:

let string = array.joined(separator: ",")