【发布时间】:2015-03-18 23:23:45
【问题描述】:
编辑:真实情况
MyAppDelegate 拥有以下资源:
@property (nonatomic, strong) NSDictionary *page1;
@property (nonatomic, strong) NSDictionary *page2;
@property (nonatomic, strong) NSDictionary *page3;
这是我初始化它们时的样子:
self.page1 = @{@"videoPath":myPath, @"leftText":self.buttonTitle1, @"menuButtons":@[page2,page3]};
self.page2 = @{@"videoPath":myPath, @"leftText":@"long text", @"menuButtons":@[page1,page3]};
self.page3 = @{@"videoPath":myPath, @"leftText":@"another text", @"menuButtons":@[page1,page2]};
所以每个 menuButtons 键都包含对其他对象的引用。
举个例子:在某个时刻,用户编辑了 buttonTitle1 变量,写入了一个新文本(例如:“我的新按钮标题”)。 我希望其他字典(page2 和 page3)能反映这种修改,所以检查 page2[@"menuButtons"] 会给我一个“我的新按钮标题”(page1 的 leftText 键)和“另一个文本”(page3 的 leftText 键)的 NSArray。
考虑到大约有 100 个页面,用户可以多次编辑 buttonTitle1。
我怎样才能让我的字典保持更新?
原始-未详细-问题:
给定一个带有键和值的 NSDictionary,我想保持 NSDictionary 的内容更新,所以当有人在 NSDictionary 之外编辑值时,它会反映该修改。 我不知道怎么用英文解释,所以请举个例子:
NSNumber *number = [NSNumber numberWithInt:1];
NSDictionary *dict = @{@"test":number};
NSLog(@"%@", dict); // print "test = 1"
number = [NSNumber numberWithInt:2];
NSLog(@"%@", dict); // print "test = 1" but I'd expect "test = 2"
我知道 NSDictionary 获取对象的副本,那么是否有任何其他组件或解决方法来完成此操作?
请注意,我已经尝试过使用 NSMutableDictionary 和 NSMapTable,但没有成功。
【问题讨论】:
标签: ios objective-c nsdictionary