tableViewCell中的归因文本崩溃

时间:2014-08-08 20:11:33

标签: ios objective-c nsattributedstring

我在表格视图单元格中有一个标签,我将一些属性文本传递给使用此代码:

NSString *labelText = [object objectForKey:@"prayerText"];

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:25];

[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];

_prayer.prayerText.attributedText = attributedString;

它在应用程序的开头工作正常和花花公子,当你点击该单元格时,它会进入一个基本相同代码的详细视图,以显示具有相同属性的文本。当我回到表格视图时发生崩溃。我收到这个错误:

'NSInvalidArgumentException', reason: 'NSConcreteMutableAttributedString initWithString:: nil value'

所以似乎labelText正在解除分配,当视图返回时,在它可以填充数据源中的数据之前,我的属性字符串正在用nil字符串初始化。

那么我该如何测试这个理论,更重要的是如何解决它呢?

修改

我通过添加以下内容修复了它:

if (!labelText || [labelText isEqualToString:@""]) {

        attributedString = [[NSMutableAttributedString alloc] initWithString:@""];

}

else {

    attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];

}

我应该多阅读一下,但是在使用parse时会使用不同的方法来填充单元格,并且必须在生命周期中发生一些奇怪的事情,抛出该异常但添加了检查修复它。它有点脏,但它的工作原理。

0 个答案:

没有答案