2015-06-24 86 views
2

我试图合并2 NSDictionary对象到1 NSMutableDictionary。通过阅读2个不同的plist文件创建了NSDictionary。 ,如何结合两个NSDictionaries?

@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两次。

+0

什么是你的问题?你有什么问题? – rmaddy

回答

2

在添加条目之前是否已初始化您的NSMutableDictionary?

NSMutableDictionary *configuration = [[NSMutableDictionary alloc] init]; 
+0

是啊!刚刚意识到它没有被初始化。谢谢! – agoldis

1

这工作:

-(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; 
}