2012-04-13 3 views
0

Я сделал небольшую программу расчета расхода газа. Существует один контроллер вида для каждого ввода данных, необходимый для расчета потребления в контроллере конечного представления. Итак, вы вводите ведомое расстояние в первом контроллере, газ заправляется в следующем контроллере. в контроллере, отображающем результат, добавляется и текущая дата. Все записи хранятся в файле plist как строки для более удобного использования с табличными представлениями позже (кроме даты).сортировочная матрица, содержащая массивы ios

Теперь я хочу открыть эти данные в контроллере итогового представления, чтобы заполнить таблицу.

В настоящее время я получить 3 массивы из файла Plist (аналогичны колонкам таблицы): массива 1: NSDate массива 2: NSString, представляющее число массива 3: NSString, представляющего число

Я знаете, как заполнить мое табличное представление, но я не могу обернуть голову вокруг сортировки. Я попытался изменить подход столбца к подходу на основе таблицы, получая каждый отдельный элемент из каждого массива и добавляя его в новый массив, содержащий каждую дату и два числа (в виде строк).

Я попытался настроить сортировщики, я попытался использовать селекторы, но, похоже, я не полностью понимаю, как это работает. Лично я предпочитаю примеры, поэтому я искал учебники по этой теме. Документальный фильм разработчика не очень помог.

Я не ожидаю получить полный пример этой проблемы, но, возможно, некоторые указатели на то, как упорядочить мои данные и что лучше всего использовать для сортировки полного массива данных.

Спасибо за любые указатели или примеры.

EDIT: Я, наконец, получил все «Табличные строки» как «строки» в словаре. Теперь я могу получить доступ к отдельным столбцам по ключу для столбца. И это также позволяет сортировать значения строк в моем массиве словарей по возрастанию или убыванию, используя sortdescriptor.

Это может быть не самый элегантный подход, но я думаю, что теперь я могу делать то, что хотел. Извините «Табличные» сравнения, но я считаю, что это легче понять.

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

ответ

2

Я не совсем ясно, как вы хотите отсортировать, но, может быть, вы можете адаптировать что-то из этого (сортирует массив словарей каждый с ключом @ «строки» с типом значения NSNumber) -

Прежде всего, сделайте функцию результата сравнения:

static NSComparisonResult compareRowNumbers(NSDictionary *dict1, NSDictionary *dict2, void * context) { 

    if ([[dict1 objectForKey:@"row"] intValue] < [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedAscending;} 
    if ([[dict1 objectForKey:@"row"] intValue] > [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedDescending;} 

    return NSOrderedSame; 

} 

Затем вы можете использовать его, как так -

NSMutableArray *myArray = [NSMutableArray array]; 

// populate your array with loads of stuff (in this case, NSDictionaries as decribed above) 
// now sort it 

[myArray sortUsingFunction:compareRowNumbers context:NULL]; 

... и ваш массив автоматически сортируются.

+0

Думаю, я мог бы использовать ваш ответ, чтобы отсортировать мой массив на дату. Но я нашел трудный способ, как это сделать, и, наконец, нашел то, что я узнал до этого: http: //stackoverflow.com/questions/7507457/sort-array-of-dictionaries-by-nsdate. Так что, может быть, прочитав в ссылку, становится все яснее, что мне нужно. Простите мое, возможно, плохое объяснение раньше, но я начал программировать с нуля по книгам в октябре прошлого года, и я все еще учился.Я попробую ответить в следующий раз, когда мне нужно сравнить отдельные элементы друг с другом. Но спасибо. – Mike73

Смежные вопросы