1

次の構造を持つ配列があります。

(
    [0] = (
         [0] = @"Title string"
         [1] = @"Some content string"
    )
    [1] = (
         [0] = @"Title string"
         [1] = @"Some content string"
    )
    [2] = (
         [0] = @"Title string"
         [1] = @"Some content string"
    )
    ...
)

などなど、さまざまな量の再発に 4 番目。

私の目標は、すべてを 1 つの文字列にマージして NSTextField に表示し、すべてのタイトル文字列を太字にすることです。したがって、上記のコードを出力すると、次のようになります。


タイトル文字列
一部のコンテンツ文字列

タイトル文字列
一部のコンテンツ文字列

タイトル文字列
一部のコンテンツ文字列


私の最初の質問は、特定のテキストが太字である単一の文字列をどのように作成できるかということです。2 番目の質問は、その文字列を取得して NSTextField に送信するにはどうすればよいかということです。


これまでのところ、これは私がやったことです。
私はNSMutableAttributedString文字列を次のようにするために使用しようとしました:

NSMutableAttributedString *contentString = [NSMutableAttributedString alloc];

for (int i=0; i<[result count]; i++) {

    [contentString addAttribute:NSFontAttributeName
                value:[NSFont fontWithName:@"HelveticaNeue-Bold" size:16.0]
                range:NSRangeFromString(result[i][0])];
}

しかし、文字列に何か他のものを追加する方法、またはそれを単独で印刷しようとする方法がわかりませんでした。これは、次のようにして NSTextField に表示しようとしたときにこのエラーが発生したためです。

[self->contentView setString:contentString];

タイプ「NSString *」のパラメーターに「NSMutableAttributedString *」を送信する互換性のないポインタータイプ

代わりにこれを試しましたが、別のエラーが発生しました

[self->contentView attributedString:contentString];

「NSTextView」の目に見える @interface がセレクター「attributedString」を宣言していません

4

2 に答える 2

0

これはどう...

NSMutableAttributedString *contentString = [[NSMutableAttributedString alloc] init];
for (int i = 0; i < [result count]; i++) {
    NSMutableAttributedString *resultString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@\n\n", result[i][0], result[i][1]]];
    [resultString addAttribute:NSFontAttributeName
            value:[NSFont fontWithName:@"HelveticaNeue-Bold" size:16.0]
            range:NSRangeFromString(result[i][0])];
    [contentString appendAttributedString:resultString];
}

他のコードに関するいくつかのメモ。あなた[NSMutableAttributedString alloc]をinitのようなものと必ず一致させてください[[NSMutableAttributedString alloc] init]

NSMutableAttributedStringは のサブクラスではなく、 のNSString代わりに使用できるメソッドではないことNSObjectに注意setString:してください。

NSTextViewinsertText:値を設定するために使用します。

于 2014-05-24T02:23:25.643 に答える