1

NSStringsに追加するものがいくつかありNSArrayます。文字列には特殊文字が含まれる場合があります。最後に、配列をに出力したいと思いUILabelます。

非常に単純化されたコード (何かを見逃したと思われる場合はお知らせください):

NSString *strBuffer = @"Röckdöts";
NSLog(@"String: %@", strBuffer);

NSMutableArray *marrSelectedStrings = [[NSMutableArray alloc] init];
[marrSelectedStrings addObject:strBuffer];
NSLog(@"Array: %@", marrSelectedStrings);

NSUInteger iCount = [marrSelectedStrings count]
for (NSUInteger i = 0; i < iCount; i++)
{
    NSLog(@"element %d: %@", i, [marrSelectedStrings objectAtIndex: i]);
}

別のUIViewController:

self.label.text = [NSString stringWithFormat:@"%@", marrSelectedStrings];

文字列自体は正常に出力されます。ただし、配列の場合、コンソールが正しい特殊文字またはコードを表示するかどうかは、出力方法によって異なります。ラベルには、実際の文字ではなくコードのみが印刷されています。経由での印刷NSLogは次のようになります。

Buffer: Röckdöts
Array: (
    R\U00f6ckd\U00f6ts
)
element 0: Röckdöts

ラベルには次のように書かれています。

R\U00f6ckd\U00f6ts

配列に追加する際と、ラベルに割り当てる際にエンコードする際に使用してみstringWithUTF8Stringましたが、結果は変わりませんでした:

// adding with UTF8 encoding
[marrSelectedStrings addObject:[NSString stringWithUTF8String:[strBuffer UTF8String]]];

// printing to label with UTF8 encoding
self.label.text = [NSString stringWithUTF8String:[[NSString stringWithFormat:@"%@", marrSelectedStrings] UTF8String]];

UILabel配列を反復してすべての単語を追加するよりも、正しい文字エンコーディングで配列を単純に出力する簡単な方法はありますか?

4

2 に答える 2

1

これを試して

NSString * result = [[marrSelectedStrings valueForKey:@"description"] componentsJoinedByString:@""];
self.label.text = result;
于 2013-06-12T15:27:56.163 に答える