我在表格视图单元格中有一个标签,我将一些属性文本传递给使用此代码:
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时会使用不同的方法来填充单元格,并且必须在生命周期中发生一些奇怪的事情,抛出该异常但添加了检查修复它。它有点脏,但它的工作原理。