0

如何将未初始化的对象存储在NSDictionary?

我想我会这样做,但我不确定这是一个好方法:

 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
                     [MyObject1 alloc], @"myObject1",
                     [MyObject2 alloc], @"myObject2"
                     , nil];

MyObject1 *object = [dict objectForKey:@"myObject1"];

[object init];

任何帮助,将不胜感激。

4

1 回答 1

3

您需要的是在字典中存储可变对象。这样做您将能够在插入后修改它们,因为不可变字典不允许插入新对象。

如果对于“未初始化”,您的意思是该对象仅使用 alloc 创建,而没有 init,那么这是不赞成的,因为init 可能返回与使用 alloc 返回的对象不同的对象。所以就像你正在做的那样存储它们,当你需要修改它们时调用访问器:

NSDictionary *dict = @{ @"myObject1" : [MyObject1 new] , @"myObject2" : [MyObject2 new] };
dict[@"myObject1"].someProperty= someValue;

如果您的 MyObject1 类是不可变的,那么您必须使用可变字典。

于 2013-01-12T12:36:36.547 回答