Да, это то, что я упомянул в своем комментарии . Каждый раз, когда вызывается connectionDidFinishLoading:
, вы получаете результат только одного соединения. Если вы перебираете все имена файлов, вы будете многократно записывать один и тот же кусок данных во все эти имена. Каждый раз в цикле for в parsingComplete:
вы создаете новое соединение, получаете новый объект данных, а затем записываете один и тот же объект несколько раз. После окончания цикла parsing...
у вас останется список файлов с данными последнего подключения.
Я очень устала и не уверена: мне ясно?
Обращаясь к вашему комментарию:
Вам нужно будет либо сделать правильное имя файла для текущего соединения доступным для методов делегата, возможно, поместив его в ivar, либо перейти по синхронному маршруту. Вставка в него некоторого ивара, такого как currFileName
, чтобы все методы этого класса могли получить к нему доступ, вероятно, является наименее безболезненным способом выполнения работы.
/* In parsingCompleted: */
for (int x = 0; x < [catArray count]; x++)
{
/* download each file to the corresponding category sub-directory */
// fileOut is an instance variable
fileOut = [NSString stringWithFormat:@"%@/%@_0%i.jpg",cat,catName,x];
imageRequest = [NSURLRequest etc...
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// No loop; just use that file name that you set up earlier;
// it correctly corresponds to the current NSURLConnection
[receivedData writeToFile:fileOut atomically:YES];