尝试插入从对象无对象[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。有谁会碰巧知道如何解决这个问题吗?
谢谢!
TLDR:self.highlightedTextColor
是nil
。将其设置为某种颜色。
详情:
的代码将这个消息三种情况崩溃:
self.font
是nil
。self.textColor
nil
是和self.isEnabled
是YES
和self.isHighlighted
是NO
。self.highlightedTextColor
是nil
和self.isEnabled
是YES
和self.isHighlighted
是YES
。
由于KILabel
延伸UILabel
这不允许textColor
和font
nil
值,则问题可能是由highlightedTextColor
(选项3)引起的。
一个很好的答案,一个糟糕的问题! –
@jape只需将'self.highlightedTextColor'设置为非零值。您也可以在'KILabel'源文件中使用更安全的条件'else if(self.isHighlighted && self.highlightedTextColor){'或通过提供默认的'highlightedTextColor',例如' ' - (UIColor *)highlightedTextColor {return [super highlightedTextColor]?:[UIColor yellowColor]; }' – Sulthan
谢谢!做条件陈述并提供默认颜色会有害吗?还是那种毫无意义? – jape
调试它,打印/检查'self.font','color','shadow'和'paragraph'来查看哪个值为零,为什么! – luk2302