Массив, в котором 3 объекта представляют одну ячейку в uitableView - PullRequest
0 голосов
/ 30 января 2012

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

Таким образом, пользователь вводит рост и вес!

Я звоню в записи, чтобы получить все данные, отсортированные по методу timeStamp, то есть самое последнее - первое.

это порядок, который я получаю,

-Высота - 30 января 2012 г.-Вес - 30 января 2012

-Высота - 30 декабря 2011 -Высота - 30 декабря 2011

-Высота - Novem 2011 -Вес - Роман 2011

Итак, у меня 6объекты в моем mutableArray.

ALДля мыслей в источнике данных tableView я хочу только 3 строки.Каждый с комбинацией ht / wt.

Итак, что будет моей функцией в cellforRow / numberOfRows / и снова получит эти комбинации в didSelectRow.

2 -Также в приведенном выше примере каждыйВ строке есть 2 объекта. Что если бы была другая ситуация, когда мне потребовалось бы 3 объекта.Например, систолическое артериальное давление / диастолическое артериальное давление / пульсовое давление - все введенные пользователем и извлеченные в отсортированных временных метках, в этом случае в каждой строке будет представлено 3 объекта, а в 3 рядах будет всего 9 ..

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

спасибо за вашу помощь!

[EDIT:] Я поясню одну вещь: таблица Entries - имеет свой собственный класс Entryobject. У каждого класса есть -Value -Timestamp -CategoryID

Причина, по которой я не хочу, чтобы объект был определен для роста / веса, заключается в том, что: - рост и вес не возвращаются в одной строке .. это зависит от комбинации категории, например, BodyMassIndex возвращает категорию comboиз 2-х записей, как объяснено выше, так что id нужно вычислять здесь снова, .. что противоречит цели самого объекта.

  • Другая причина в том, что я не могу определить это, я не знаю, является ли запись SBP, Ht или wt.Это то, что CategoryObject будет называть, скажем, для записи Ht и записи Wt, оба имеют CategoryID как 1. SBP, DP, PP будут иметь CategoryID как 2.

Этот способ предназначен для созданияприложение более масштабируемо на будущее!хотя это меня уводит!

Эмм, получил решение, используя MATH !!это будет очень дорого по памяти?

fieldCount - количество свойств.ht and wt = 2!

    limiterIndex=indexPath.row * fieldCount;

    NSMutableArray *returnArray = [NSMutableArray new];

    for(int i=limiterIndex; i<(limiterIndex+fieldCount); i++){ 
    [returnArray addObject:[entriesArray objectAtIndex:i]; 
    } 
    [cell setDataFromArray:returnArray];
    [returnArray release]; 

Я не уверен, что это сработает, но, похоже, он получает записи на ячейку из массива all in one records !, по крайней мере, на бумаге!

Похоже, это дорогой способ?

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Я бы создал объект модели, который извлекает основной массив всех записей.

Этот объект модели также имеет методы, которые возвращают правильные данные на основе переданного индекса.

 weightString = (NSString*)[self.dataModel getWeightAtIndex:indexPath.row];

Я бы тогда создавал ячейки динамически, добавляя текстовые / полевые представления к ячейкам по мере необходимости.

EDIT:

Если вам нужен метод, который может отличаться в зависимости от того, что он возвращает, создайте такой, как:

weightString = (NSString*)[self.dataModel getDataAtIndex:indexPath.row forDataType:@"weight"];
0 голосов
/ 30 января 2012

Вы должны создать пользовательский объект, который содержит все необходимые данные в одной ячейке. Затем поместите их в массив и используйте в качестве источника данных.

В вашем случае поместите данные о ширине и высоте в некоторый объект myObject. Затем поместите эти myObjects в myObjectsArray и используйте его в качестве источника данных.

Затем в ваших клетках извлеките myObject и извлеките из них высоту и ширину.

Это можно использовать для заполнения ячейки в cellForRowAtIndexPath:

Это вы можете использовать для размеров ячейки в heightForRowAtIndexpath:

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

Короче говоря, я предлагаю создать эти пользовательские объекты и использовать их в качестве источника данных tableView. Вы поймете это. Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...