我试图在NSMutableDictionary中存储各种字符串和NSMutableArray。基本上是一个带有各种键/值的XML元素和一个带有列表的子元素。
NSMutableArray *subItem = [[[NSMutableArray alloc] init] autorelease];
for (GDataXMLElement *subElement in [key children]){
[subItem addObject:[[[self runThroughElement:subElement] copy] autorelease]];
}
[item setObject:[[subItem copy] autorelease] forKey:[key name]];
当我检查类型时:
NSLog(@"Categories type: %@", [[item objectForKey: @"categories"] classForCoder]);
我明白了:
分类类型:NSArray
但是在处理数据并将其存储在对象中的函数中,它突然显示为一个字符串:
NSLog(@"Categories type: %@", [[obj objectForKey: @"categories"] classForCoder]);
结果是:
类别类型:NSString
我不知道出了什么问题,为什么我从字典中得到一个字符串而不是我放入的数组呢?任何帮助将非常感激! (可能需要更多信息,所以请让我知道相关的内容)
答案 0 :(得分:1)
你不应该真的使用classForCoder。而只需记录 [[obj objectForKey:@“categories”] class] 。我还尝试记录直的 [obj objectForKey:@“categories”] 以查看它是否输出字符串或数组。如果它输出一个字符串,那么obj不是item或者你的字典在某个时候被修改。
一点建议,没有任何理由做[[[NSMutableArray alloc] init] autorelease]。只需调用[NSMutableArray array]。做同样的事情,但代码更少。对于许多类来说也是如此,寻找方便类方法来节省你必须做alloc / init / autorelease。