В настоящее время я анализирую некоторый xml, который выглядит следующим образом
<Rows>
<Row MANUFACTURERID="76" MANUFACTURERNAME="Fondont" ISMANU="F" ISAUTO="F"/>
<Row MANUFACTURERID="18" MANUFACTURERNAME="Anti" ISMANU="T" ISAUTO="T"/>
</Rows>
Я анализирую его, чтобы получить массив словарей (в каждом словаре есть четыре значения строки).
Затем я передаю ManufacturerName моему методу startSortingTheArray следующим образом:
if (dataSetToParse == @"ICMfg") // ICMfg is a string passed to this view from the parent view cell selection enabling me to pass different data sets to this view
{
//Filter results (ISAUTO = T)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ISAUTO",@"T"];
NSArray *filteredArray = [myDataArray filteredArrayUsingPredicate:predicate];
//Passes Manufacturer strigs over to startSortingtheArray method
[self startSortingTheArray:[filteredArray valueForKey:@"MANUFACTURER"]];
}
Таким образом, здесь все ManufacturerNames отправляются моему методу в виде массива строк.Затем я использую этот массив для настройки всех моих разделов / index-scroller.Метод ниже показывает, как я это делаю.
//method to sort array and split for use with uitableview Index
- (IBAction)startSortingTheArray:(NSArray *)arrayData
{
//If you need to sort incoming array alphabetically use this line of code
//TODO: Check values coming in for capital letters and spaces etc
sortedArray = [arrayData sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
//If you want the standard array use this code
//sortedArray = arrayData;
self.letterDictionary = [NSMutableDictionary dictionary];
sectionLetterArray = [[NSMutableArray alloc] init];
//Index scrolling Iterate over values for future use
for (NSString *value in sortedArray)
{
// Get the first letter and its associated array from the dictionary.
// If the dictionary does not exist create one and associate it with the letter.
NSString *firstLetter = [[value substringWithRange:NSMakeRange(0, 1)] uppercaseString]; //uppercaseString puts lowercase values with uppercase
NSMutableArray *arrayForLetter = [letterDictionary objectForKey:firstLetter];
if (arrayForLetter == nil)
{
arrayForLetter = [NSMutableArray array];
[letterDictionary setObject:arrayForLetter forKey:firstLetter];
[sectionLetterArray addObject:firstLetter]; // This will be used to set index scroller and section titles
}
// Add the value to the array for this letter
[arrayForLetter addObject:value];
}
//Reload data in table
[self.tableView reloadData];
}
отсюда я делаю несколько вещей, чтобы настроить таблицу после [self.tableView reloadData]; вызывается,главное, что я установил ячейку со строковыми значениями массива.
//Display cells with data
NSArray *keys = [self.letterDictionary objectForKey:[self.sectionLetterArray objectAtIndex:indexPath.section]];
NSString *key = [keys objectAtIndex:indexPath.row];
cell.textLabel.text = key;
когда ячейка затем выбрана, строковое значение внутри ячейки затем отправляется обратно в главное представление и используется позжев качестве параметра поиска ... Дело в том, что я устанавливаю несколько параметров, которые будут использоваться в качестве одной строки поиска.
Оглядываясь на XML, который я проанализировал
<Rows>
<Row MANUFACTURERID="76" MANUFACTURERNAME="Fondont" ISMANU="F" ISAUTO="F"/>
<Row MANUFACTURERID="18" MANUFACTURERNAME="Anti" ISMANU="T" ISAUTO="T"/>
</Rows>
Это значения столбцов в таблице SQl, имеющей ключевое значение MANUFACTURERID, которое также встречается в других таблицах, которые я анализирую.Я хотел бы использовать эти ключевые значения для ограничения / уточнения других запросов, но я просто не могу понять, как передать их в мое родительское представление, где я настраиваю все параметры поиска, и это мой вопрос, как мне сохранить словарь значений, которыйсвязан с выбором таблицы просмотра пользователей из подпредставления.Чтобы затем я мог передать одно или несколько из этих значений обратно в подпредставление другого набора данных, чтобы ограничить отображаемую информацию в зависимости от предыдущих выборов пользователей.
Это заняло у меня около часа, чтобы напечатать.Надеюсь, это имеет смысл, я все еще довольно новичок в разработке для iOS и Objective C, и эта концепция действительно расширяет мои возможности, и прежде чем я продолжу и в итоге собираю какую-то ерунду, которую мне придется исправить позже, я надеюсь, что этотили некоторые из вас смогут одолжить мне свой опыт такого рода, чтобы я мог сделать это правильно с первого раза:)
Если вам понадобится, чтобы я кое-что разъяснил или предоставил вам дополнительную информацию, которая поможет вампомогите мне просто дайте мне знать.
Заранее спасибо!