首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图从NSString中提取图像URL

试图从NSString中提取图像URL
EN

Stack Overflow用户
提问于 2016-01-02 11:57:27
回答 2查看 133关注 0票数 0

我试图为iOS做一个RSS应用程序,并试图从xml文件的描述标记( RSS )中获取图像URL。

以下是我的当前代码:

代码语言:javascript
复制
static NSMutableString *title;
static NSMutableString *linkPost;
static NSMutableString *descriptionPost;
static NSString *element;

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {

    if ([element isEqualToString:@"title"]) {
        [title appendString:string];
    } else if ([element isEqualToString:@"link"]) {
        [linkPost appendString:string];
    } else if ([element isEqualToString:@"description"]) {
        [descriptionPost appendString:string];
        NSString *imgURL = descriptionPost;
        imgURL = [imgURL substringFromIndex:[imgURL rangeOfString:@"src="].location+[@"src=" length]+1];
        imgURL = [imgURL substringToIndex:[imgURL rangeOfString:@"alt="].location-2];
        NSLog(@"log: imgURL = %@",imgURL);
    }
}

我的应用程序崩溃,我在崩溃日志中得到了这样的信息:

代码语言:javascript
复制
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSCFString substringFromIndex:]: Index 9223372036854775812 out of bounds; string length 1'

那是什么意思?我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-02 12:31:35

这可能对你有帮助:

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *description = @"<p>The post <a rel=\"nofollow\" href=\"http://www.raywenderlich.com/123606/video-tutorial-adaptive-layout-part-8-conclusion\">Video Tutorial: Adaptive Layout Part 8: Conclusion</a> appeared first on <a rel=\"nofollow\" href=\"http://www.raywenderlich.com\">Ray Wenderlich</a>.</p>";

    NSString *url = [self extractFromString:description start:@"href=\"" end:@"\">"];
    NSLog(@"%@",url);


}

-(NSString*)extractFromString:(NSString*)string start:(NSString*)start end:(NSString*)end{

    NSRange r1=[string rangeOfString:start];
    NSRange  r2 = [string rangeOfString:end];
    NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length);

    NSString *extractedString=[string substringWithRange:rSub];
    return extractedString;
}
票数 -1
EN

Stack Overflow用户

发布于 2016-01-02 12:34:49

在此代码中使用appendString:的原因是所提供的数据可能不完整(由于处理过程中的缓冲等原因)。在完成标记的解析之前,您不应该尝试处理这些内容。

您所看到的是,您的rangeOfString:调用不匹配任何内容,并返回一个具有NSNotFound位置的范围。当您尝试使用时,您将得到一个索引异常。

您应该将代码更改为在标记完成处理后运行,并防止未找到要查找的子字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34565623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档