Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSLog字符串正常,但UITextView中的字符串导致异常_Ios_Objective C_Tfhpple - Fatal编程技术网

Ios NSLog字符串正常,但UITextView中的字符串导致异常

Ios NSLog字符串正常,但UITextView中的字符串导致异常,ios,objective-c,tfhpple,Ios,Objective C,Tfhpple,所以我有一个视图控制器,在viewdidload方法中,它应该从一个网页加载一些内容,只是一个概念证明,它最终会被缓存。它使用tfhipple库获取内容并将内容放入数组中,将数据记录到控制台,然后我希望它将内容应用到UITextView。但是,当调用视图控制器时,它甚至会将文本记录到控制台,但在将其设置为UITextView内容的行上,它会导致异常 NSData *dataURL; NSString *url = @"http://www.testwebsite.com/testpage.htm

所以我有一个视图控制器,在viewdidload方法中,它应该从一个网页加载一些内容,只是一个概念证明,它最终会被缓存。它使用tfhipple库获取内容并将内容放入数组中,将数据记录到控制台,然后我希望它将内容应用到UITextView。但是,当调用视图控制器时,它甚至会将文本记录到控制台,但在将其设置为UITextView内容的行上,它会导致异常

NSData *dataURL;
NSString *url = @"http://www.testwebsite.com/testpage.html";
dataURL =  [NSData dataWithContentsOfURL: [NSURL URLWithString: url]];

NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];

TFHpple * doc       = [[TFHpple alloc] initWithHTMLData:dataURL];

NSArray *elements  = [doc searchWithXPathQuery:@"//div[contains(@id,'main-section')]//text()"];

NSString * aboutcontents = [elements objectAtIndex:2];
NSLog(@"test: %@", aboutcontents);
self.aboutbox.text = aboutcontents;
它导致的异常情况如下所示,以及之前的控制台输出:

2013-06-24 09:37:51.433 AppName[24765:c07] test: {
    nodeContent = "Test Content";
    nodeName = text;
    raw = "Test Content";
}
2013-06-24 09:37:51.434 AppName[24765:c07] -[TFHppleElement length]: unrecognized selector sent to instance 0x8043be0
2013-06-24 09:37:51.434 AppName[24765:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TFHppleElement length]: unrecognized selector sent to instance 0x8043be0'
*** First throw call stack:
(0x25d012 0x16ebe7e 0x2e84bd 0x24cbbc 0x24c94e 0x76b4fb 0x3347 0x7111c7 0x711232 0x7328c9 0x732704 0x730bda 0x730a5c 0x732647 0x16ff705 0x6332c0 0x633258 0x855ff4 0x16ff705 0x6332c0 0x633258 0x6f4021 0x6f457f 0x6f4056 0x859af9 0x16ff705 0x6332c0 0x633258 0x6f4021 0x6f457f 0x6f36e8 0x662cef 0x662f02 0x640d4a 0x632698 0x22b2df9 0x22b2ad0 0x1d2bf5 0x1d2962 0x203bb6 0x202f44 0x202e1b 0x22b17e3 0x22b1668  0x62fffc 0x2fdd 0x21a5)
libc++abi.dylib: terminate called throwing an exception
(lldb) 
我有点想不通它为什么会这样。如果我手动将字符串aboutcontents设置为某物,那么它会毫无疑问地更改UITextView的内容

感谢您的帮助。

试试以下方法:

TFHppleElement * aboutcontents = [elements objectAtIndex:2];
NSLog(@"test: %@", [aboutcontents text]);
self.aboutbox.text = [aboutcontents text];
以下是文件部分,摘自:

例如,尝试获取属性并查看它返回给您的内容。

尝试以下操作:

TFHppleElement * aboutcontents = [elements objectAtIndex:2];
NSLog(@"test: %@", [aboutcontents text]);
self.aboutbox.text = [aboutcontents text];
以下是文件部分,摘自:

例如,尝试获取属性并查看它返回给您的内容。

试试这个

NSDictionary * aboutcontents = [elements objectAtIndex:2];
NSLog(@"test: %@", aboutcontents);
self.aboutbox.text = [aboutcontents objectForKey:@"nodeContent"];
我不理解上下文,但我在日志中看到了{},我想只有字典可以这样打印。

试试这个

NSDictionary * aboutcontents = [elements objectAtIndex:2];
NSLog(@"test: %@", aboutcontents);
self.aboutbox.text = [aboutcontents objectForKey:@"nodeContent"];
我不理解上下文,但我在日志中看到了{},我想只有字典才会以这种方式打印出来。

您得到了NSString*aboutcontents=[elements objectAtIndex:2]的结果;是一本字典,将字典转换成如下字符串

NSString * aboutcontents=[NSString stringWithFormat:@"%@",[elements objectAtIndex:2]];
您将获得NSString*aboutcontents=[elements objectAtIndex:2]的结果;是一本字典,将字典转换成如下字符串

NSString * aboutcontents=[NSString stringWithFormat:@"%@",[elements objectAtIndex:2]];

aboutcontents不是NSString,这就是它失败的原因。NSLog将调用NSObject上的方法,因此它仍然可以成功。类TFHippleElement的对象不支持长度选择器。为什么要向需要NSString的对象发送TfippleElement?请尝试以下操作:self.aboutbox.text=[NSString stringWithFormat:@%@,aboutcontents]aboutcontents不是NSString,这就是它失败的原因。NSLog将调用NSObject上的方法,因此它仍然可以成功。类TFHippleElement的对象不支持长度选择器。为什么要将TFHippleElement发送到需要NSString的对象?请尝试此self.aboutbox.text=[NSString stringWithFormat:@%@,aboutcontents]已修复为调用text methodHi,谢谢,这不会导致崩溃,但会返回null。如果返回null,则可能意味着该特定元素中没有文本。尝试出现在日志中的一个关键字@阿达米现在明白了。非常感谢!修复了调用text methodHi,谢谢,这不会导致崩溃,但会返回null。如果返回null,则可能意味着该特定元素中没有文本。尝试出现在日志中的一个关键字@阿达米现在明白了。非常感谢!这项工作做得很出色。非常感谢!这项工作做得很出色。非常感谢!