我正在下载一个文本文件,并使用其中的信息创建多个对象。
我正在使用以下代码来实现此目的:
NSString *fileContents = [NSString stringWithContentsOfURL: readerView.url
encoding: NSUTF8StringEncoding
error: NULL];
NSArray *lines = [fileContents componentsSeparatedByString:@"\n"];
for(NSString *line in lines)
{
NSArray *params = [line componentsSeparatedByString:@","];
NSString *label1 = [params objectAtIndex:0];
NSString *label2 = [params objectAtIndex:1];
float weight = [[params objectAtIndex:2] floatValue];
int x1 = [[params objectAtIndex:3] intValue];
int y1 = [[params objectAtIndex:4] intValue];
int x2 = [[params objectAtIndex:5] intValue];
int y2 = [[params objectAtIndex:6] intValue];
int type = [[params objectAtIndex:7] intValue];
[graph addComponents:label1:label2 :weight :x1 :y1 :x2 :y2 :type];
}
文本文件中的一行示例如下:
A,B,6.0,270,190,150,190,1
所以这很基本。我想要做的是文本文件的第一行或最后一行,有一个URL会触发另一个图像下载。我无法想到实现这一目标的最佳方法。在我看来,我在伪代码中想到这样的事情:
如果(line = first line)
触发下载
否则
通过参数。
答案 0 :(得分:1)
我会尝试检查该行是否采用有效的参数格式。如果没有,请尝试解析为URL。
假设网址中不包含7个逗号,
for(NSString *line in lines) {
NSArray *params = [line componentsSeparatedByString:@","];
if ([params count] == 8) {
// go through params
} else {
NSURL* url = [NSURL URLWithString:line];
if (url) {
// trigger download...
}
}
}
这样,URL就可以放在文件的任何位置。
答案 1 :(得分:1)
KennyTM是对的,但我会反过来做,因为,
是某些方案的有效URL字符而对其他方案无效,因此有可能(如果不可能)得到误报。如果该行不是有效的URL,则将该行解析为URL将返回nil,然后您可以将该行解析为缺少URL时所期望的格式化数据。
for(NSString *line in lines) {
NSURL* url = [NSURL URLWithString:line];
if (url) {
// trigger download...
} else {
NSArray *params = [line componentsSeparatedByString:@","];
// Do stuff with params
}
}