尝试插入从对象无对象[1]

问题描述:

在我的项目,我太快速滚动,我得到一个错误说:尝试插入从对象无对象[1]

Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: 
'*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[1]' 
*** First throw call stack: 
(0x180a39900 0x1800a7f80 0x1809281a8 0x180928040 0x1000a3994 0x1000a2b30 
0x10016e784 0x185f4c108 0x185790810 0x18578b89c 0x185727778 
0x183136b2c 0x183131738 0x1831315f8 0x183130c94 0x1831309dc 0x183183770 
0x180cae1e8 0x1809db1f8 0x1809f1634 0x1809f0d6c 0x1809eeac4 0x18091d680 
0x181e2c088 0x185794d90 0x100183934 0x1804be8b8) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

它然后我返回到下面的代码(高亮朝NSDictionary *attributes线底部):

- (NSDictionary *)attributesFromProperties{ 
    // Setup shadow attributes 
    NSShadow *shadow = shadow = [[NSShadow alloc] init]; 
    if (self.shadowColor){ 
     shadow.shadowColor = self.shadowColor; 
     shadow.shadowOffset = self.shadowOffset; 
    } else { 
     shadow.shadowOffset = CGSizeMake(0, -1); 
     shadow.shadowColor = nil; 
    } 

    // Setup color attributes 
    UIColor *color = self.textColor; 
    if (!self.isEnabled){ 
     color = [UIColor lightGrayColor]; 
    } else if (self.isHighlighted){ 
     color = self.highlightedTextColor; 
    } 

    // Setup paragraph attributes 
    NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; 
    paragraph.alignment = self.textAlignment; 

    // Create the dictionary 
    NSDictionary *attributes = @{NSFontAttributeName : self.font, 
           NSForegroundColorAttributeName : color, 
           NSShadowAttributeName : shadow, 
           NSParagraphStyleAttributeName : paragraph, 
           }; 
    return attributes; 
} 

此代码是从KILabel。有谁会碰巧知道如何解决这个问题吗?

谢谢!

+1

调试它,打印/检查'self.font','color','shadow'和'paragraph'来查看哪个值为零,为什么! – luk2302

TLDR:self.highlightedTextColornil。将其设置为某种颜色。

详情:

的代码将这个消息三种情况崩溃:

  1. self.fontnil

  2. self.textColornil是和self.isEnabledYESself.isHighlightedNO

  3. self.highlightedTextColornilself.isEnabledYESself.isHighlightedYES

由于KILabel延伸UILabel这不允许textColorfontnil值,则问题可能是由highlightedTextColor(选项3)引起的。

+0

一个很好的答案,一个糟糕的问题! –

+1

@jape只需将'self.highlightedTextColor'设置为非零值。您也可以在'KILabel'源文件中使用更安全的条件'else if(self.isHighlighted && self.highlightedTextColor){'或通过提供默认的'highlightedTextColor',例如' ' - (UIColor *)highlightedTextColor {return [super highlightedTextColor]?:[UIColor yellowColor]; }' – Sulthan

+0

谢谢!做条件陈述并提供默认颜色会有害吗?还是那种毫无意义? – jape