/ / Приложение проблем с катастрофа при използване на пластина в iPhone - iphone, plist

Проблем при срив на приложението при използване на пластина в iPhone - iphone, plist

Използвал съм NSMutable речник и NSMutable Array. Данните трябва да се съхраняват и извличат от плочата (Directory Documents) с помощта на NSArray от NSMutable Dictionary.

Редактиране:

Имам шест бутона в изгледа за превъртане, на кликваниябутонът, данните трябва да се показват в табличния изглед, използвайки синхронизиране на XML. аз поставих данните в плисето и се извадих от плочата и показах в табличния изглед. В табличния изглед имам един бутон като изглед отдолу. При кликването върху бутона следващите елементи се анализират и показват в табличния изглед. Следващото съдържание на параграфите се добавя към предишното съдържание. Използвах NSMutable речник за съхранение на данните в пакета.

Тук моят код е,

Връщащият масив връща данните за анализа и.

  -(void)callFromSecondaryThread:(NSMutableArray *)returnArray{

if([returnArray count] > 0)
{
for(NSMutableArray *arr in returnArray)
{
//[copyArray addObjectsFromArray:returnArray];
//[copyArray addObject:returnArray];
//[ ???? ??? ??????? ?????? ]
}
[self.table reloadData];
}

// За първи път запазете съдържанието в листото и заредете съдържанието от листото и се показва в табличния изглед

 -(void)startParsingBasedOnSelectedTabValue:(NSString *)strValue {//button value

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

if (![self checkFileIsThere:tagString]) { //checks the plist is available or not, if its not available, then create a new file. i have created separate plist file for each buttons.

if([copyArray count] > 0)
{
[copyArray removeAllObjects];
}

feedDictionary = [[NSMutableDictionary alloc]init];

//send url for parsing [self parsingMethod];

[feedDictionary setObject:copyArray forKey:tagString];

[feedDictionary writeToFile:[self saveFilePath:tagString] atomically:NO];

[feedDictionary release];

} else{

NSString *stringPtah = [self saveFilePath:tagString];

NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:stringPtah];

NSMutableArray *arrArray = [dictionary objectForKey: tagString];

copyArray = [arrArray copy];
}
[self.table performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
[pool drain];
}


//On clicks the next 10 details button,

-(void) details:(NSString *) strpageCount
{

if ([self checkFileIsThere:tagString]) {

[[NSFileManager defaultManager]  removeItemAtPath:[self saveFilePath:tagString] error:NULL];  // remove the old plist here

NSMutableDictionary *feedDictionary1 = [[NSMutableDictionary alloc]init];

[self parsingMehods];

[feedDictionary1 setValue:copyArray forKey:tagString];

[feedDictionary1 writeToFile:[self saveFilePath:tagString] atomically:NO];

[pageDictionary setValue:pString forKey:tagString];

[feedDictionary1 release];

[self.table reloadData]; // After writing the file in the plist, i just reload the table data and displayed the contents in the table view.

}
}

Но мога да получа успешно данните вcopyArray понякога само. което означава, че съм кликнал върху следващия бутон след зареждането на изгледа, работи добре. Но ако преместих следващия бутон и посетих този изглед и се върнах в първия изглед и щракна върху следващия бутон, разбих моите приложения.

Мога да получа данните в returnArray и copyArray е моят основен масив и използван за показване на съдържанието (CellforRowatindex) .ReturnArray е матричен масив и съдържа заглавието, датата, изображението и т.н.,

При кликването върху бутона (следващите детайли 10) имампремахнах моя стар плит и създадох нов плик с новото съдържание (За пример: първата плитка съдържа 10 съдържания в масива за копиране и връща 4 ново съдържание, ще се добавят 14 съдържания в масива за копиране и ще се показват в табличния изглед) , При първото зареждане на моите приложения, щракване върху следващия бутон, масивът ще бъде добавен успешно. Но аз посещавам останалите бутони и подробности, после се завръщам в изгледа и кликвам върху следващия бутон, разбивам приложенията си и получавам това изключение,

     Terminating app due to uncaught exception "NSInternalInconsistencyException", reason: "-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object"

Прекарах много часове в този проблем и не успях да намеря решение.

Моля, споменато какво съм направил погрешно в моя код ..

Моля, насочете ме ?.

Благодаря!

Отговори:

1 за отговор № 1

Линията copyArray = [arrArray copy]; би трябвало copyArray = [arrArray mutableCopy];, Получавате грешката, защото copyArray е неизменна.