如何忽略一系列NSStrings中的空字符串值

时间:2013-04-29 14:53:32

标签: ios objective-c xcode uiimage nsxmlparser

我正在使用NSXMLParser来解析来自RSS Feed的数据。从CDATA Block,我也是通过首先捕获图像网址来提取图像。这就是我使用nsxmlparser的CDATA方法的方法:

- (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;
}

正如您所看到的,一切都很干净而且干得很简单。您可以看到以下输出:

enter image description here

有没有什么方法它只是没有收到空值而只拍摄图片网址?

2 个答案:

答案 0 :(得分:2)

为什么不自己忽略零值字符串?

NSString *imageURLString = [self getFirstImageUrl:someString];
if (imageURLString)
    NSLog(@"IMAGE URL STRING %@", imageURLString);

答案 1 :(得分:0)

[self getFirstImageUrl:someString];

你不应该使用currentString变量吗?

也不要推测

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
对于XML节点,

只会被调用一次,你应该在启动包含CDATA的节点时创建一个新的NSMutableData对象,使用foundCDATA委托方法将appendData附加到NSMutableData,并在完成处理节点时仅使用NSMutableData对象(你有两个委托方法)