首先,正如我看到许多其他人似乎在宣布这些问题时宣布的那样,我是Objective C的初学者。我来自强大的PHP背景,因此我了解大多数编程概念,并且一直在学习Obj在过去的12个月内,打开和关闭C。

我开始使用iOS Objective C的第一个项目之一就是与Magento SOAP API集成。可能一开始并不是最容易的事情,但这仍然是一个很好的挑战。

我当前正在尝试集成XMLReader(https://github.com/amarcadet/XMLReader)。但是XCode总是向我抛出错误:
ARC语义问题:选择器'dictionaryForNSXMLParser:'的未知类方法

它引用以下代码:

NSDictionary *dict = [XMLReader dictionaryForNSXMLParser:parser];


我从另一个问题中找到了一些建议:
How can you use AFNetworking or STHTTPRequest to make a request of a SOAP web service?

我已经还原了代码以准确反映问题中提供的示例,因此我一直在努力解决该错误,但无济于事。

非常感谢您的帮助,对于我忽略的愚蠢行为,我深表歉意。我曾尝试搜索类似问题的谷歌,但它们似乎都导致类方法被实例调用,等等。

最佳答案

一分钟前,我自己在尝试该代码。

您必须添加XMLReader.h

+(NSDictionary*)dictionaryForNSXMLParser:(NSXMLParser*)parser error:(NSError **)error;


然后在XMLReader.m这两个中:

+ (NSDictionary *)dictionaryForNSXMLParser:(NSXMLParser *)xmlParser error:(NSError **)error
{
    XMLReader *reader = [[XMLReader alloc] initWithError:error];
    NSDictionary *rootDictionary = [reader objectWithNSXMLParser:xmlParser options:0];
    return rootDictionary;
}
- (NSDictionary *)objectWithNSXMLParser:(NSXMLParser *)xmlParser options:(XMLReaderOptions)options
{
    // Clear out any old data
    self.dictionaryStack = [[NSMutableArray alloc] init];
    self.textInProgress = [[NSMutableString alloc] init];

    // Initialize the stack with a fresh dictionary
    [self.dictionaryStack addObject:[NSMutableDictionary dictionary]];

    [xmlParser setShouldProcessNamespaces:(options & XMLReaderOptionsProcessNamespaces)];
    [xmlParser setShouldReportNamespacePrefixes:(options & XMLReaderOptionsReportNamespacePrefixes)];
    [xmlParser setShouldResolveExternalEntities:(options & XMLReaderOptionsResolveExternalEntities)];

    xmlParser.delegate = self;
    BOOL success = [xmlParser parse];

    // Return the stack's root dictionary on success
    if (success)
    {
        NSDictionary *resultDict = [self.dictionaryStack objectAtIndex:0];
        return resultDict;
    }

    return nil;
}


之后,请记住导入XMLReader.h并使用该方法。请注意,它具有错误处理功能,因此,如果您复制粘贴的代码,则不一样。

[XMLReader dictionaryForNSXMLParser:parser error:nil];


如果仍然无法正常工作,请尝试使用CMD + SHIFT + K清理项目,然后重新构建。

关于ios - XMLReader Xcode错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27458490/

10-10 14:30