我有一个循环,通过HTML标识网页的元素,并提取我需要的部分。我想要构建一个数组或(非常)长的提取文本字符串,以后可以使用。
提取使用来自GitHub的TFHpple。问题似乎在于提取的文本是_CFNSString,而这些不允许我将它们转换为NSString或NSMutuableArray。
我使用的代码是:
NSArray *webNodes = [webParser searchWithXPathQuery:tutorialsXpathQueryString];
NSString *extractedText = [[NSString alloc] init];
NSMutableArray *extractedArray = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in webNodes) {
Extraction *extraction = [[Extraction alloc] init];
[extractedArray addObject:extraction];
extraction.title = [[element firstChild] content];
extractedText = extraction.title;
NSLog(@"\n\nTitle: %@", extractedText);
}
此时的NSLog显示我的每个循环后,我提取的文本保持不变,打破代码显示extractText为_CFNSString。
如果我尝试添加
text = [text StringByAppendingString extractedText];
(' text'是在循环之前初始化的NSString)作为循环的最后一步,我得到一个空值。如果我尝试将text或extract.title直接添加到数组中,它也是一样的。
我发现了这个问题Convert NSCFString to NSString,但转换似乎是另一种方式(NSString到CFNSString)。当我添加等效代码时,我遇到了桥接错误,而且代码没有运行。
如何在extract.title中收集数据以构建可在以后使用的字符串或数组?
答案 0 :(得分:0)
你说你只想要一个文字。
在一行代码中获取它:
NSArray *extractedArray = [webNodes valueForKeyPath:@"firstChild.content"];
对于字符串:
NSString *extractedText = [webNodes valueForKeyPath:@"firstChild.content"] componentsJoinedByString:@" "];