如何合并两个 NSDictionaries?
How to combine two NSDictionaries?
我正在尝试将 2 个 NSDictionary
对象合并为 1 个 NSMutableDictionary
。 NSDictionary
是通过读取 2 个不同的 plist
文件创建的。
@property (nonatomic, strong) NSMutableDictionary *configuration;
...
-(NSMutableDictionary*) configuration{
if (!_configuration) {
NSDictionary *core_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"installation" ofType:@"plist"]];
NSDictionary *app_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle bundleWithPath:@"/path/to"] pathForResource:@"something/data" ofType:@"plist"]];
[_configuration addEntriesFromDictionary: core_config];
[_configuration addEntriesFromDictionary: app_config];
NSLog(@"merged: %lu, core: %lu, app: %lu", (unsigned long)[_configuration count], (unsigned long)[core_config count], (unsigned long)[app_config count]);
// merged: 0, core: 4, app: 5
}
return _configuration;
}
_configuration
是空的,尽管调用了 addEntriesFromDictionary
两次。
你在添加条目之前初始化你的 NSMutableDictionary 了吗?
NSMutableDictionary *configuration = [[NSMutableDictionary alloc] init];
这有效:
-(NSMutableDictionary*) configuration{
if (!_configuration) {
NSDictionary *core_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"installation" ofType:@"plist"]];
NSDictionary *app_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle bundleWithPath:@"/Volumes/RolloutSDKInstaller"] pathForResource:@".rollout/app" ofType:@"plist"]];
_configuration = [NSMutableDictionary dictionaryWithDictionary: core_config];
[_configuration addEntriesFromDictionary: app_config];
NSLog(@"merged: %lu, core: %lu, app: %lu", (unsigned long)[_configuration count], (unsigned long)[core_config count], (unsigned long)[app_config count]);
//merged: 9, core: 4, app: 5
}
return _configuration;
}
我正在尝试将 2 个 NSDictionary
对象合并为 1 个 NSMutableDictionary
。 NSDictionary
是通过读取 2 个不同的 plist
文件创建的。
@property (nonatomic, strong) NSMutableDictionary *configuration;
...
-(NSMutableDictionary*) configuration{
if (!_configuration) {
NSDictionary *core_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"installation" ofType:@"plist"]];
NSDictionary *app_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle bundleWithPath:@"/path/to"] pathForResource:@"something/data" ofType:@"plist"]];
[_configuration addEntriesFromDictionary: core_config];
[_configuration addEntriesFromDictionary: app_config];
NSLog(@"merged: %lu, core: %lu, app: %lu", (unsigned long)[_configuration count], (unsigned long)[core_config count], (unsigned long)[app_config count]);
// merged: 0, core: 4, app: 5
}
return _configuration;
}
_configuration
是空的,尽管调用了 addEntriesFromDictionary
两次。
你在添加条目之前初始化你的 NSMutableDictionary 了吗?
NSMutableDictionary *configuration = [[NSMutableDictionary alloc] init];
这有效:
-(NSMutableDictionary*) configuration{
if (!_configuration) {
NSDictionary *core_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"installation" ofType:@"plist"]];
NSDictionary *app_config = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle bundleWithPath:@"/Volumes/RolloutSDKInstaller"] pathForResource:@".rollout/app" ofType:@"plist"]];
_configuration = [NSMutableDictionary dictionaryWithDictionary: core_config];
[_configuration addEntriesFromDictionary: app_config];
NSLog(@"merged: %lu, core: %lu, app: %lu", (unsigned long)[_configuration count], (unsigned long)[core_config count], (unsigned long)[app_config count]);
//merged: 9, core: 4, app: 5
}
return _configuration;
}