将attributedText分配给UILabel会使用'NSConcreteMutableAttributedString initWithString :: nil value'崩溃应用程序

时间:2014-06-11 17:15:58

标签: ios objective-c uitableview nsattributedstring

这是我的tableViewCell代码的实现,我在这里做的只是从我的MainViewController获取数据并将其分配给两个不同的UILabel。

问题在于UILabel * subTitle,当我使用attributedText分配它以传递所需的行间距时,应用程序在滚动tableView后崩溃。但是,如果我只是用.text =分配它,它运行正常,没有崩溃。

@property (strong, nonatomic) IBOutlet UILabel *title;
@property (strong, nonatomic) IBOutlet UILabel *subTitle;

- (void)configureWithPosts:(Data *)data {

  self.title.text = data.title;

  NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:data.excerpt];
  NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
  [attributeString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [attributeString length])];
  [paragraphStyle setLineSpacing:3];

  self.subTitle.textColor = [UIColor colorWithRed:102.0f/255.0f green:102.0f/255.0f blue:102.0f/255.0f alpha:1.0];
  self.subTitle.attributedText = attributeString;

}

有谁能告诉我这里我做错了什么?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSConcreteMutableAttributedString initWithString:: nil value'

3 个答案:

答案 0 :(得分:4)

我偶然尝试将字体设置为不存在的字体时遇到此错误:

NSMutableAttributedString *selectedString = [[NSMutableAttributedString alloc] initWithString:self.allUsersButton.titleLabel.text];
[selectedString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:NSMakeRange(0, selectedString.length)];
[selectedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica-Neue-Bold" size:16.0f]

这里的问题是NSFontAttributeName应该是fontWithName:@"Helvetica-Neue-Bold"

答案 1 :(得分:0)

我之前也遇到过这个问题,似乎它是iOS7上UILabel的一个错误。

我转而使用TTTAttributedLabel https://github.com/mattt/TTTAttributedLabel,我从未见过这样的问题。

答案 2 :(得分:-1)

该错误表示字符串 data.excerpt 在行中为零

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:data.excerpt];

我猜你真的想要 data.title 。但这只是猜测代码的其余部分。