ОК. У меня есть приложение для iPad, которое читает журналы. Все предыдущие выпуски работают нормально. Мне удается создать новую проблему (до того, как это сделал другой парень, покинувший фирму) и без проблем запустить ее в симуляторе и на устройстве.
Теперь я добавляю строку для нового выпуска журнала в базу данных, сжимаю все изображения и мультимедиа с помощью инструмента ZIP и делю их на MacHacha (потому что класс Java, который загружает части из MacHacha для загрузки по одной), и загружаю их на сервер. В App Store я скачал журнал и вижу новый выпуск. На сервере новый ряд хорош, имеет все хорошие параметры и размер соответствует размеру на диске.
При новой загрузке финских сообщений отображается ошибка. Я попробовал ту же процедуру с симулятора, и в OUTPUT, в момент, когда он падает, показывает ошибку декомпрессии (0).
Я предположил, что проблема в том, чтобы собрать детали вместе с MacHacha. Может кто-нибудь помочь или дать мне тот улов, который решает эту проблему.
если это поможет, я могу загрузить новый выпуск и предоставить ссылку (это бесплатно), я буду вам полезен, парни и девушки:)
http://www.mazzantieditori.it/applicazioni/219-nycit-italian-american-magazine.html
ссылка на приложение. В библиотеке мало вопросов, и последний новый (Giugno 2011).
Я предоставлю код для этого метода, который выдаст строку для ошибки:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// контрольная и квитанция
если (мин == 0 && [длина полученных данных]
NSString *file = [[self documentsDir:1] stringByAppendingPathComponent:@"archivio.zip"];
if (max <= num && !cancelDownload) {
self.progressBar.progress = (1.0f/num)*min;
min = max+1;
max += 5;
// creo directory per l'elemento scaricato
BOOL isDir = NO;
if(![[NSFileManager defaultManager] fileExistsAtPath:file isDirectory:&isDir]) {
NSError *error;
//creo directory
[[NSFileManager defaultManager] createDirectoryAtPath:[self documentsDir:1] withIntermediateDirectories:YES attributes:nil error:&error];
//creo file vuoto
[[NSFileManager defaultManager] createFileAtPath:file contents:nil attributes:nil];
}
NSFileHandle *handler = [NSFileHandle fileHandleForWritingAtPath:file];
if(handler) {
[handler seekToEndOfFile];
[handler writeData:receivedData];
}
NSLog(@"Received %d bytes of data; min: %i max: %i",[receivedData length],min,max);
[receivedData setLength:0];
// questa è la seconda invocazione
[self downloadArchivePart:@"verified"];
[connection release];
return;
}
NSFileManager *man = [[NSFileManager alloc] init];
NSDictionary *attrs = [man attributesOfItemAtPath:file error: NULL];
//UInt32 result =
NSNumber *size = [attrs objectForKey:NSFileSize];
//int length = [receivedData length];
NSLog(@"Succeeded! Received %i bytes of data",[size intValue]);
[man release];
//1.038.090 è il numero di byte della parte più piccola dell'archivio
if([size intValue] >= kMinPartSize) {
NSLog(@"prod %@",self.prodName);
if(self.prodName == nil || [self.prodName isEqualToString:@""]) self.prodName = prodId;
NSError *error;
BOOL ok = [TWZipArchive unzipFileAtPath:file toDestination:[self documentsDir:1] overwrite:YES password:nil error:&error];
//unzipFileAtPath:file toDestination:[self documentsDir]];
NSString *msg;
if(ok) {
NSLog(@"decompression successfull");
self.progressBar.progress = 1.0f;
NSFileManager *fm = [NSFileManager defaultManager];
[fm removeItemAtPath:file error:&error];
msg = @"Download completed: new issue added in libray";
NSMutableArray *array;
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSString *path = [[self documentsDir:0] stringByAppendingPathComponent:@"downloaded.plist"];
if(![[NSFileManager defaultManager] fileExistsAtPath:path]) {
[dict setObject:prodId forKey:@"id"];
[dict setObject:prodName forKey:@"titolo"];
array = [NSArray arrayWithObject:dict];
[array writeToFile:path atomically:YES];
}
array = [NSMutableArray arrayWithContentsOfFile:path];
BOOL exist = NO;
for (int i=0; i<[array count]; i++) {
if ([[[array objectAtIndex:i] objectForKey:@"id"] isEqualToString:prodId]) {
exist = YES;
//prodId = [NSString stringWithFormat:@"%@%i",prodId,i];
}
}
if(exist == NO) {
[dict setObject:prodId forKey:@"id"];
[dict setObject:prodName forKey:@"titolo"];
[array insertObject:dict atIndex:0]; //sempre in testa l'ultimo elemento scaricato
[array writeToFile:path atomically:YES];
}
}
else {
NSLog(@"decompression error");
msg = @"An error has occurred";
}
//[myAlert release];
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"NYC.IT"
message:@"Download completed: new issue added in libray"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
//[alert release];
}else {
if(cancelDownload == YES) {
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"NYC.IT"
message:@"Download stopped for user action"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}else {
NSString *errFile = [[self documentsDir:1] stringByAppendingPathComponent:@"errFile.html"];
[receivedData writeToFile:errFile atomically:YES];
NSLog(@"err : %@",errFile);
NSLog(@"scrittura error file eseguita");
NSLog(@"receipt non valido");
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"NYC.IT"
message:@"Downloading error: please retry later!"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
progressBar.hidden = YES;
// release the connection, and the data object
[connection release];
//[receivedData release];
* *} Тысяча двадцать-один
Заранее спасибо ...