异常崩溃尝试从对象[0]插入nil对象

时间:2013-03-09 17:02:27

标签: objective-c cocoa-touch crash nsdictionary

我正在使用NSDictionary来更改appDelegate文件中UIBarButtonItem的外观:

UIBarButtonItem *barButtonItemProxy = [UIBarButtonItem appearanceWhenContainedIn:
                                       [UINavigationBar class], [UINavigationController class], nil];

NSDictionary *textAttributes = @{UITextAttributeFont :
                                     [UIFont fontWithName:@"ChocoBold" size:13.0f],
                                 UITextAttributeTextColor : [UIColor whiteColor],
                                 UITextAttributeTextShadowColor : [UIColor blackColor],
                                 UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)]
                                 };
[barButtonItemProxy setTitleTextAttributes:textAttributes forState:UIControlStateNormal];

该应用程序在模拟器中运行良好,但当我在设备上运行时,应用程序崩溃时出现以下异常:

 [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]

崩溃发生在NSDictionary *textAttributes行。

我不明白那个字典中的哪个参数是nil?

1 个答案:

答案 0 :(得分:3)

NSLog(@"font family %@",[UIFont fontNamesForFamilyName:@"Choco"]);

如果您的应用中存在choco字体系列,则会记录所有可用的字体名称。然后复制确切的字体名称。 可能是您使用的字体名称错误,例如它的Choco-Bold而不是chocobold等。

NSMutableDictionary *textAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       [UIColor whiteColor],UITextAttributeTextColor,
                                       [UIColor blackColor],UITextAttributeTextShadowColor,
                                       [NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)],UITextAttributeTextShadowOffset,
                                       [UIFont fontWithName:@"Helvetica" size:13.0f],UITextAttributeFont,nil];

尝试使用“Helvetica”字体,如果它有效,则问题出在您的字体上。