NSDictionary objectForKey-需要一个带有一个元素的NSArray,而不仅仅是一个元素



我是objective-c的新手,需要一些帮助。在下面的代码中,如果xml只包含一个元素,那么objectForKey调用将产生一个元素而不是一个只有一个元素的NSArray。我应该如何更新代码以确保行:

[[ApplicationManager sharedInstance] setTags:[[result objectForKey:XML_OPTION_LIST] objectForKey:XML_OPTION]];

总是用NSArray调用setTags(即使xml包含零个或一个元素)?

NSString *XMLResponse = [request responseString];
NSError *parseError = nil;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:XMLResponse error:&parseError];
NSDictionary *result = [xmlDictionary objectForKey:XML_RESULT];
if ([[[result objectForKey:XML_ERROR_CODE] objectForKey:XML_TEXT] isEqualToString:XML_ERROR_NONE]) {
    [[ApplicationManager sharedInstance] setTags:[[result objectForKey:XML_OPTION_LIST] objectForKey:XML_OPTION]];
    [[ApplicationManager sharedInstance] save];
} 

xml OPTION_LIST元素包含一个或多个OPTION元素。只有一个OPTION元素时才会发生错误(不在此代码的范围内)。我感谢你的帮助。

由于尝试将objectForKey:消息发送到某个不是NSDictionary实例的对象,因此会发生此错误。

您将包含一个检测该元素的测试,并根据测试结果直接传递该元素的setTags:方法。

if([[[result objectForKey:XML_ERROR_CODE] objectForKey:XML_TEXT] isEqualToString:XML_ERROR_NONE]) {
    if([[result objectForKey:XML_OPTION_LIST] isKindOfClass:[NSDictionary class]]) {
        [[ApplicationManager sharedInstance] setTags:[[result objectForKey:XML_OPTION_LIST] objectForKey:XML_OPTION]];
    }
    else {
        [[ApplicationManager sharedInstance] setTags:[result objectForKey:XML_OPTION_LIST]];
    }
    [[ApplicationManager sharedInstance] save];
}

最新更新