迭代NSDictionary以向对象添加值

时间:2016-02-12 06:58:08

标签: ios objective-c nsdictionary

我正在尝试遍历NSDictionary并将该字典中的所有值添加到对象中。所以我在我的项目中添加了新的cocoa类文件,并使用NSObject对其进行了子类化。 (将其命名为customClass) 在我的自定义class.h中:

- (void)printDir;     // iterate through the direcory and print it.

@property (nonatomic, retain) NSMutableDictionary *objDictionary;

在customClass.m中,printDir方法的定义如下:

- (void)printDir {
    _objDictionary = [[NSMutableDictionary alloc ]init];
    for(id key in _objDictionary) {
    id value = [_objDictionary objectForKey:key];
    NSLog(@"Values in Objects Dictionary");
    NSLog(@"%@",value);
    }
}

在我的ViewController.m中,我试图遍历NSDirectory并将该目录的所有值添加到对象的NSMutableDictionary中。为此,

for(id key in jsonDictionary.allKeys) {
    id value = [jsonDictionary objectForKey:key];
    [obj.objDictionary setObject:value forKey:key];
}

当我运行项目时,会调用对象的printDir方法,但for循环不会执行。有人可以指出我哪里出错了。感谢。

2 个答案:

答案 0 :(得分:0)

_objDictionary = [[NSMutableDictionary alloc ]init];

printDir方法中的这一行更改为自定义类的init方法。现在的问题是,每当您到达printDir方法时,它都会将_objDictionary重新分配为零。所以循环不会执行

答案 1 :(得分:0)

在printDir函数中,您再次分配字典 objDictionary ....所以它超过您的视图控制器的实际值供应....您只需将您的功能更改为此 在.h文件中

$inputFilter->getRawValues();

在.m文件中

- (void)printDirwithDictionary :(NSMutableDictionary *)dict;

在ViewController.m中关注此代码

- (void)printDirwithDictionary:(NSMutableDictionary *)dict {
    _objDictionary = [[NSMutableDictionary alloc] initWithDictionary:dict]
    for(id key in _objDictionary) {
    id value = [_objDictionary objectForKey:key];
    NSLog(@"Values in Objects Dictionary");
    NSLog(@"%@",value);
    }
}

来自View Controller的调用将是这样的 然后按照相同的程序。希望这将正常工作。