包含NSMutableArray的NSMutableDictionary返回一个字符串

时间:2011-02-03 11:53:12

标签: iphone cocoa nsmutablearray nsmutabledictionary

我试图在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

我不知道出了什么问题,为什么我从字典中得到一个字符串而不是我放入的数组呢?任何帮助将非常感激! (可能需要更多信息,所以请让我知道相关的内容)

1 个答案:

答案 0 :(得分:1)

你不应该真的使用classForCoder。而只需记录 [[obj objectForKey:@“categories”] class] 。我还尝试记录直的 [obj objectForKey:@“categories”] 以查看它是否输出字符串或数组。如果它输出一个字符串,那么obj不是item或者你的字典在某个时候被修改。

一点建议,没有任何理由做[[[NSMutableArray alloc] init] autorelease]。只需调用[NSMutableArray array]。做同样的事情,但代码更少。对于许多类来说也是如此,寻找方便类方法来节省你必须做alloc / init / autorelease。