Hpple实现/无法识别的select器

我在这里使用hpple htmlparsing器: https : //github.com/topfunky/hpple

为了testing这个函数,我把它添加到一个简单的项目中,并且能够无误地编译和打开模拟器,但是当它被调用的时候,我得到了一个无法识别的select器错误。

//THIS ACTION SET TO RUN WITH THE PUSH OF A BUTTON - (IBAction)parseElements{ NSString *urlRequest = item.link; NSLog(@"urlRequest defined."); NSData *htmlData = [NSString stringWithContentsOfURL:[NSURL URLWithString: urlRequest] encoding:NSUTF8StringEncoding error:nil]; NSLog(@"htmlData created."); TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData]; NSLog(@"xpathParser made."); NSString *queriedItem = @"[@class='title']"; // THE APP FAILS WHILE TRYING TO EXECUTE THE NEXT LINE NSArray *elements = [xpathParser searchWithXPathQuery:queriedItem]; NSLog(@"elements searched."); TFHppleElement *element = [elements objectAtIndex:0]; NSLog(@"element recalled."); NSString *storyTitle = [element content]; NSLog(@"The title of the story is: %@", storyTitle); } 

NSLogs通过“xpathParser made”来显示,然后我收到这个无法识别的select器消息:

– [__ NSCFString bytes]:发送到实例0x6a52d60的无法识别的select器

*由于未捕获exception“NSInvalidArgumentException”,原因:' – [__ NSCFString bytes]:无法识别的select器发送到实例0x6a52d60'

*第一掷调用堆栈:(0x16c8052 0x1859d0a 0x16c9ced 0x162ef00 0x162ece2 0x495c 0x352e 0x2e3f 0x16c9ec9 0x1395c2 0x13955a 0x1deb76 0x1df03f 0x1de2fe 0x15ea30 0x15ec56 0x145384 0x138aa9 0x15b2fa9 0x169c1c5 0x1601022 0x15ff90a 0x15fedb4 0x15feccb 0x15b1879 0x15b193e 0x136a9b 0x2658 0x25b5)终止叫做抛出一个exception

我知道它不喜欢SOMETHING,但是是什么导致了小故障或是正确执行所需的附加框架/import? 现在,我有UIKit,viewcontroller.h和TFHpple.h设置为该文件中唯一的import。

这是你的问题:

 NSData *htmlData = [NSString stringWithContentsOfURL:[NSURL URLWithString: urlRequest] encoding:NSUTF8StringEncoding error:nil]; TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData]; 

TFHppleinitWithHTMLData应该是一个NSData 。 你声明htmlData是一个NSData ,但你分配给它的实际对象是一个NSString

这应该解决它:

 NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString: urlRequest]];