Ios 如何从一系列NSString中忽略空字符串值
我正在使用NSXMLParser解析RSS提要中的数据。从CDATA块中,我还通过首先捕获图像URL来提取图像。以下是我如何使用nsxmlparser的CDATA方法:Ios 如何从一系列NSString中忽略空字符串值,ios,objective-c,xcode,uiimage,nsxmlparser,Ios,Objective C,Xcode,Uiimage,Nsxmlparser,我正在使用NSXMLParser解析RSS提要中的数据。从CDATA块中,我还通过首先捕获图像URL来提取图像。以下是我如何使用nsxmlparser的CDATA方法: - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEn
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
[currentString appendString:someString];
NSString *imageURLString = [self getFirstImageUrl:someString];
NSLog(@"IMAGE URL STRING %@", imageURLString);
}
这就是我在上述方法中调用的方法:
-(NSString *)getFirstImageUrl: (NSString *) html {
NSScanner *theScanner;
NSString *imageURL = nil;
theScanner = [NSScanner scannerWithString: html];
// find start of tag
[theScanner scanUpToString: @"<img" intoString: NULL];
if ([theScanner isAtEnd] == NO) {
[theScanner scanUpToString: @"src=\"" intoString: NULL];
NSInteger newLoc2 = [theScanner scanLocation] + 5;
[theScanner setScanLocation: newLoc2];
// find end of tag
[theScanner scanUpToString: @"\"" intoString: &imageURL];
}
return imageURL;
}
-(NSString*)getFirstImageUrl:(NSString*)html{
NSScanner*扫描仪;
NSString*imageURL=nil;
扫描仪=[NSScanner SCANNER WITHSTRING:html];
//查找标记的开始
[扫描程序扫描字符串:@”
正如您所看到的,一切都是干净和简单的。您可以看到以下输出:
有没有办法不接收空值而只获取图像URL
[self getFirstImageUrl:someString];
您不应该使用currentString变量吗
也不要妄想
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
对于XML节点只调用一次,您应该在启动包含CDATA的节点时创建一个新的NSMutableData对象,使用foundCDATA委托方法将数据追加到NSMutableData,并且在完成处理节点时仅使用NSMutableData对象(您有两个委托方法)为什么不自己忽略零值字符串呢
NSString *imageURLString = [self getFirstImageUrl:someString];
if (imageURLString)
NSLog(@"IMAGE URL STRING %@", imageURLString);
即使您使用currentString变量,结果也是一样的。您能提供一些代码来处理来自NSMutableDataThank的图像URL吗?谢谢。可能是我喝醉了,没想到这么容易。