我正在尝试遍历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循环不会执行。有人可以指出我哪里出错了。感谢。
答案 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的调用将是这样的 然后按照相同的程序。希望这将正常工作。