0

我想在 NSmutableArray 中添加 NSString Name 但我不知道。我从 wamp 服务器中的 url 获得 5 个 NSString 名称,我想在 NSMutableArray 中添加这些名称。

这是我的代码,但不工作!!!:

    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???
    } 
4

2 回答 2

4

你没有分配NSMutableArray

NSMutableArray *file = [[NSMutableArray alloc] initWithCapacity:5];

如果您不确定预先添加到数组中的元素数量,您可以使用

NSMutableArray *file = [[NSMutableArray alloc] init];
于 2013-04-16T08:18:58.537 回答
3

首先,NSMutableArray必须分配。

其次,必须避免使用幻数。

接下来应该通过replace来提高代码的可读性

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,您将重写代码。如果元素的数量改变,它是相同的。所以最好找到一种方法来避免这种依赖。

于 2013-04-16T08:50:44.623 回答