首先,正如我看到许多其他人似乎在宣布这些问题时宣布的那样,我是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/