【发布时间】:2011-11-26 04:21:07
【问题描述】:
在我的代码中,我尝试加载 ROBOTS.TXT 文件,然后通过“Disallow”字符串过滤它们,然后如果该行有“Disallow string”,则删除该字符串并返回该行的其余部分。
这里是 ROBOTS.TXT 的示例
用户代理:*
禁止:/搜索
禁止:/groups
禁止:/图像
禁止:/目录
允许:/catalogs/about
不允许:/catalogues
不允许:/news
允许:/news/directory
这是我拥有的代码:
NSRange range;
NSURL *url=[NSURL URLWithString:@"http://www.google.com/robots.txt"];
NSString *content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSArray *parsed = [content componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSMutableArray *robots=[[[NSMutableArray alloc] init] autorelease];
NSMutableString *line= [[[NSMutableString alloc] init] autorelease];
for(line in parsed){
range=[line rangeOfString:@"Disallow"];
if (range.location != NSNotFound) {
[line deleteCharactersInRange: NSMakeRange(1,9 )];
[robots addObject:line];
}
}
这是错误:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“尝试改变不可变 带有 deleteCharactersInRange 的对象:'
【问题讨论】:
-
stackoverflow.com/questions/1242335/… 这个问题可能与您有关,可能会回答您的问题。希望对你有帮助
-
注意
[[[NSMutableArray alloc] init] autorelease];可以写得更清楚更简单:[NSMutableArray array];方便的方法可以帮助编写干净的代码,它们可以在ARC和非ARC代码中使用。
标签: objective-c nsmutablestring