如何从NSMutableArray循环添加NSString
问题描述:
我想在NSmutableArray中添加NSString名称,但我不知道这一点。 我从wamp服务器的url中获得5个NSString名称,我想在NSMutableArray中添加这些名称。如何从NSMutableArray循环添加NSString
这是我的代码,但不工作! :
NSMutableArray *file;
for (int j=0; j < 5; j++) {
NSString *fileName = [[NSString alloc]initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.101/janatan/filemanager.php?dir=root&file=%d&name",j]]];
NSLog(@"%@",fileName);
[file addObject:fileName] //right???
}
答
如果你不能确定元素的数量被添加到阵列事前你不分配NSMutableArray
NSMutableArray *file = [[NSMutableArray alloc] initWithCapacity:5];
,您可以使用
NSMutableArray *file = [[NSMutableArray alloc] init];
答
首先,NSMutableArray
必须分配。其次,必须避免使用magic numbers。
接下来,通过更换
NSString *fileName = [[NSString alloc]initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.101/janatan/filemanager.php?dir=root&file=%d&name",j]]];
的东西更方便代码的可读性应该改进。此外,这里的内存分配但从未释放。
您的代码可能如下:
const int numberOfFiles = 5;
NSMutableArray *file = [NSMutableArray array]
for(int i = 0; i < numberOfFiles; ++i){
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.101/janatan/filemanager.php?dir=root&file=%d&name", i]];
NSString *fileName = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
[file addObject:fileName];
}
但这里我们可以发现一些问题。 例如,如果在服务器端更改url,您将重写代码。如果元素的数量改变了,它是一样的。所以找到一种方法来避免这种依赖是很好的。
alloc] init];你的NSMutableArray。 – Bonnie
你想添加5次相同的文件名吗? – jkk