Objective-C에서 NSArray를 NSString으로 변환


답변:


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

1
이것이 [배열 설명]을 호출하는 것과 같은 결과를 얻지 못합니까?
TechZen 2009

10
@TechZen-아니요 [array description]. 줄 바꿈과 괄호를 삽입 하기 때문 입니다.
Dave DeLong

이것이 정답입니다!
pixelfreak

56
여기서 확인하고 싶지만 이것에 NSString * myString = [array componentsJoinedByString:@""];대한 대체품입니까?
Mick MacCallum

10
@ 0x7fffffff : 배열에 "기본"유형 만 포함 된 경우와 동일합니다. 복잡한 유형의 경우이를로 문자열 화합니다 <ClassName: InstanceAddress>. 는 valueForKey이 각 항목의 특정 속성을 검색합니다. 이 경우 descriptionNSString *속성은 NSObject하위 클래스가 getter를 대체 할 수 있습니다.
jweyrich

32

한 가지 방법은 배열을 반복 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];

배열에 많은 요소가있는 경우 먼저 모든 요소를 ​​문자열로 변환 -description하고 (아마도을 사용하여 ) 매개 변수로 -componentsJoinedByString:with 를 사용한 후 연결하는 것이 더 효율적일 수 있습니다 @"".
Georg Schölly

방금 디버깅하지 않으면 Dave Delong 이이 방법을 사용합니다.
TechZen 2009

17

나는 Sanjay의 대답이 거의 거기에 있다고 생각하지만이 방법으로 사용했습니다.

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

Sanjay가 암시 한 것처럼-NSArray의 메소드 componentsJoinedByString 을 사용 하여 결합하고 다시 제공합니다. NSString

BTW NSString 에는 splitSection 을 수행하고 NSArray를 다시 제공하는 componentsSeparatedByString 메소드 가 있습니다 .


10

최근에 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];
}

9
NSString * str = [componentsJoinedByString:@""];

그리고 당신은 dic 또는 다중 배열을 가지고 다음 벨로우즈를 사용했습니다.

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

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

첫 번째 줄은 객체로 배열을 초기화합니다. 두 번째 줄은 ""안에 문자열을 추가하여 해당 배열의 모든 요소를 ​​연결하고 문자열을 반환합니다.


이 코드는 질문에 대답 할 수 있지만,이 코드가 질문에 응답하는 이유 및 / 또는 방법에 대한 추가 컨텍스트를 제공하면 장기적인 가치가 향상됩니다.
Donald Duck

조언 해 주셔서 감사합니다.
AbdulAziz Rustam Ogli

1

목표 C 솔루션

NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"];   // "1-2-3"

해결책을 찾는 사람들 Swift

배열에 문자열이 포함 된 경우 문자열의 결합 방법을 사용할 수 있습니다.

var array = ["1", "2", "3"]

let stringFromArray = "-".join(array) // "1-2-3"

스위프트 2에서 :

var array = ["1", "2", "3"]

let stringFromArray = array.joinWithSeparator("-") // "1-2-3"

스위프트 3 & 4

var array = ["1", "2", "3"]

let stringFromArray = array.joined(separator: "-") // "1-2-3"

-1

내가 아는 방법은 쉽습니다.

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

n이 배열의 내부 위치는 SWIFT 언어입니다. 목표 C 에서 작동 할 수 있습니다


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.