当我创建一个整数作为对象的 NSDictionary 时应用程序崩溃
Posted
技术标签:
【中文标题】当我创建一个整数作为对象的 NSDictionary 时应用程序崩溃【英文标题】:App crashes when I create a NSDictionary with integer as Object 【发布时间】:2011-01-20 07:36:35 【问题描述】:当我尝试在 NSDictionary 中将整数设置为 Object 时,程序总是崩溃而没有消息(控制台中没有任何消息)。这段代码有什么问题? :
NSString *string = @"foo";
int number = 1;
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
string, @"bla1", number, @"bla2",nil];
【问题讨论】:
【参考方案1】:使用NSNumber
而不是原始的int
:
现代 Objective-C:
NSString *string = @"foo";
NSNumber *number = @1;
NSDictionary *params = @@"bla1": string, @"bla2": number;
旧式:
NSString *string = @"foo";
NSNumber *number = [NSNumber numberWithInt:1];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
string, @"bla1", number, @"bla2",nil];
【讨论】:
大部分Cocoa集合类只能存储Objective-C对象,不能存储原始类型。【参考方案2】:在字典中,您必须存储对象,而不是 int、char 等主要类型。
【讨论】:
以上是关于当我创建一个整数作为对象的 NSDictionary 时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章