2014-06-09 23 views
0

我有一个循环,通过它的HTML标识网页的元素并提取我需要的部分。我想要构建一个数组或者(非常)长的提取文本字符串,以便以后使用。将_CFNSString传递到NSString中

提取使用来自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的在这一点上显示我extractedText着每个循环之后,我,打破了代码显示extractedText是一个_CFNSString。

如果我尝试添加

text = [text StringByAppendingString extractedText]; 

(与“文”是在循环之前初始化一个NSString)作为循环的最后一步,我得到一个空值。如果我尝试将文本或extract.title直接添加到数组中,它也是一样。

我发现这个问题Convert NSCFString to NSString但转换似乎是以另一种方式(NSString到CFNSString)。当我添加等效代码时,出现桥接错误,代码无法运行。

如何收集extract.title中的数据以构建可以稍后使用的字符串或数组?

+0

什么是'text'摆在首位?问题可能是'text'在那个点上是'nil',产生'nil'结果(记住objc中允许'nil'的消息) – Alladinian

回答

0

你说你只想要一个文本。

得到它的一行代码为阵:

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

对于字符串:

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

完美,欢呼声。 – user2903240

相关问题