当我创建一个整数作为对象的 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 时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用数字作为大小创建整数的char数组

在 JavaScript 的关联数组中使用整数作为键

为什么DigitalOcean使用uuid作为Droplet id的用户ID和整数?

使用整数键创建关联数组

一个数据列作为整数,另一个作为对象的独立性卡方检验?

当我在 C++ 中派生一个类时,它是不是会创建一个基类对象并将其作为我的成员变量存储在派生类中?