将_CFNSString传递给NSString

时间:2014-06-09 15:20:40

标签: ios nsstring

我有一个循环,通过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中收集数据以构建可在以后使用的字符串或数组?

1 个答案:

答案 0 :(得分:0)

你说你只想要一个文字。

在一行代码中获取它:

NSArray *extractedArray = [webNodes valueForKeyPath:@"firstChild.content"];

对于字符串:

NSString *extractedText = [webNodes valueForKeyPath:@"firstChild.content"] componentsJoinedByString:@" "];