-->

显示,以便编辑的NSString(Display edited NSString in order)

2019-10-20 01:57发布

我一直在这几天与这个伟大社会的帮助。

我有一个NSArray ,我需要编辑NSStrings范围内。 我已成功地检测标记字符串中,并使其大胆。 但是我现在想的顺序,他们是NSArray的范围内,同时保持已添加到特定字符串粗体显示的字符串。

我可以显示个体粗体字符串“ string ”,但我需要它是为了它是在阵列内。 我知道stringByAppendingString但这把它底。

任何方向将是辉煌的。

for (NSString *testWord in legislationArray) {
            if ([testWord rangeOfString:@"BOLDME"].location != NSNotFound) {

            //Remove Marker
            NSString *stripped = [testWord stringByReplacingOccurrencesOfString:@"BOLDME" withString:@""];

            //Get string and add bold
            NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:stripped];

            NSRange selectedRange = [stripped rangeOfString:(stripped)];

            [string beginEditing];

            [string addAttribute:NSFontAttributeName
                           value:[UIFont fontWithName:@"Helvetica-Bold" size:18.0]
                           range:selectedRange];

            [string endEditing];

            //Where to go now with string?

        }
    }
    cell.dynamicLabel.text = [legislationArray componentsJoinedByString:@"\n"];

编辑

基于答案下面我得到它的工作,不过大胆的方法调用此错误:

Answer 1:

只需使用其他阵列。 更改您的代码

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] init];
for (NSString *testWord in legislationArray) {
    if ([testWord rangeOfString:@"BOLDME"].location != NSNotFound) {

        //Remove Marker
        NSString *stripped = [testWord stringByReplacingOccurrencesOfString:@"BOLDME" withString:@""];

        //Get string and add bold
        NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:stripped];

        NSRange selectedRange = [stripped rangeOfString:(stripped)];

        [string beginEditing];

        [string addAttribute:NSFontAttributeName
                       value:[UIFont fontWithName:@"Helvetica-Bold" size:18.0]
                       range:selectedRange];

        [string endEditing];

        //Where to go now with string?
        [attrString appendAttributedString:string];
    }
    else
    {
        [attrString appendAttributedString:[[NSAttributedString alloc] initWithString:testWord]];
    }
    // NEW LINE
    [attrString appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
}
cell.dynamicLabel.attributedText = attrString;

更新:

你额外的问题不是一个错误 - 这是一种方式的XCode显示如何在调试窗口归因字符串:



Answer 2:

componentsJoinedByString返回NSString ,当你想要一个NSAttributedString 。 另外,你设置你的文字,正等待一个接收器NSStringcell.dynamicLabel.text ),在那里你想应该是什么cell.dynamicLabel.attributedText

由于没有相当于componentsJoinedByStringNSAttributedString回报,你必须这样做的oldway,以for循环,从初始化NSMutableAttributedString ,并增加它的每个组件(你可以“改造”),以它。 下面是一个例子,相关的问题。



文章来源: Display edited NSString in order