Я использовал NSMutable Dictionary и NSMutable Array. Данные должны храниться и извлекаться из plist (Каталог документов) с использованием NSArray из NSMutable Dictionary.
Edit:
У меня шесть кнопок в представлении прокрутки, при нажатии кнопки данные должны отображаться в виде таблицы с использованием синтаксического анализа XML. я поместил данные в список, извлек их из списка и отобразил в виде таблицы. В табличном представлении у меня есть одна кнопка в виде нижнего колонтитула. При нажатии на кнопку, следующие элементы должны быть проанализированы и отображены в виде таблицы. Следующее содержимое анализа добавляется к предыдущему содержимому. Я использовал NSMutable Dictionary для хранения данных в plsit.
Вот мой код,
Возвращаемый массив возвращает подробности синтаксического анализа и.
-(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 деталей) я удалил свой старый plist и создал новый plist с новым содержимым. (Например, первый plist имеет 10 содержимого в массиве копирования и возвращает 4 нового содержимого. добавляется 14 содержимого в массиве копий и отображается в виде таблицы). При первой загрузке моих приложений, нажимает следующую кнопку, массив будет успешно добавлен. Но я захожу на остальные кнопки и детали, затем возвращаюсь к представлению и нажимаю следующую кнопку, я ломаю свои приложения и получаю это исключение,
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
Я потратил много часов на решение этой проблемы и пока не нашел решения.
Пожалуйста, упомянул, что я сделал неправильно в моем коде ..
Пожалуйста, ведите меня?.
Спасибо!