如何在NSDictionary
中存储未初始化的对象?
我想我会这样做,但我不确定这是一个好方法:
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[MyObject1 alloc], @"myObject1",
[MyObject2 alloc], @"myObject2"
, nil];
MyObject1 *object = [dict objectForKey:@"myObject1"];
[object init];
任何帮助都将不胜感激。
答案 0 :(得分:3)
您需要将可变对象存储在字典中。这样做,您将能够在插入后修改它们,因为不可变字典不允许插入新对象。
如果对于“未初始化”,则表示该对象仅使用alloc创建,而不使用init,这是不可弃的,因为 init可能会返回与使用alloc返回的对象不同的对象。所以只需像你一样存储它们,当你需要修改它们时,请调用访问器:
NSDictionary *dict = @{ @"myObject1" : [MyObject1 new] , @"myObject2" : [MyObject2 new] };
dict[@"myObject1"].someProperty= someValue;
如果您的MyObject1类是不可变的,那么您必须使用可变字典。