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];
TFHpple
的initWithHTMLData
应该是一个NSData
。 你声明htmlData
是一个NSData
,但你分配给它的实际对象是一个NSString
。
这应该解决它:
NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString: urlRequest]];