【问题标题】:An Array in which 3 objects represent one Cell in uitableView一个 Array,其中 3 个对象代表 uitableView 中的一个 Cell
【发布时间】:2012-01-30 12:17:05
【问题描述】:

我正在将数据从 sql 加载到 NSMutableArray 中,可以说它是一个高度和重量条目表,每个条目都有一个时间戳 (NSDate)

所以用户输入身高和体重!

我调用条目以获取所有按时间戳排序的数据,即最新的数据是第一个。

这是我得到的顺序,

-身高 - 2012 年 1 月 30 日 -重量 - 2012 年 1 月 30 日

-身高 - 2011 年 12 月 30 日 -重量 - 2011 年 12 月 30 日

-身高 - 2011 年 11 月 -体重 - 2011 年 11 月

所以我的 mutableArray 中有 6 个对象。

ALthought 在 tableView 数据源中,我只想要 3 行。每个都有 ht/wt 的组合。

那么我在 cellforRow/numberOfRows/ 中的函数是什么,并再次在 didSelectRow 中检索这些组合。

2-另外,在上面的示例中,每行有 2 个对象,如果在另一种情况下我需要 3 个对象怎么办。 例如,收缩压/舒张压/脉压全部由用户输入并以排序的时间戳检索, 在这种情况下,每行将有 3 个对象表示,3 行总共有 9 个。

每行中表示的对象数量将在我调用条目之前预定义,所以我会知道每个单元格将拥有的对象数量......只是不知道如何去做......

感谢您的帮助!

[编辑:] 我要澄清一件事,Entries 表 - 有自己的 Entryobject 类 每个班级都有一个- -价值 -时间戳 -CategoryID

我不想为身高/体重定义对象的原因是: - 身高和体重不会在单行中返回.. 它取决于类别的组合,例如 BodyMassIndex 类别将返回 2 个条目的组合,如上所述,因此 id 必须在这里再次计算,.. 这违背了对象本身。

  • 其他原因是我无法定义它,我不知道条目是 SBP、Ht 还是 wt。它是 CategoryObject 所调用的,假设 Ht 条目和 Wt 条目的 CategoryID 均为 1。SBP、DP、PP 的 CategoryID 为 2。

这种方式是为了让应用在未来更具可扩展性!虽然它让我失望!

嗯,找到了使用 mAtH 的解决方案!这在内存上会非常昂贵吗?

fieldCount 是属性的数量。 ht 和 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 entries 数组中获取每个单元格的条目!,至少在纸上!

这似乎是一种昂贵的方式?

【问题讨论】:

    标签: iphone objective-c uitableview nsmutablearray


    【解决方案1】:

    您应该创建一个自定义对象,在单个单元格中保存您需要的所有数据。然后将它们放在一个数组中并将其用作数据源。

    在您的情况下,将宽度和高度数据放入一些 myObject.然后将这些 myObjects 放入一个 myObjectsArray 并将其用作其数据源。

    然后在您的单元格中提取一个 myObject 并从中提取高度和宽度。

    您可以使用它来填充 cellForRowAtIndexPath 中的单元格:

    这个你可以用于 heightForRowAtIndexpath 中单元格的尺寸:

    当然,您也可以对其他数据执行此操作。只需制作一个包含您表格数据的自定义对象。

    简而言之,我建议制作这些自定义对象并将它们用作 tableView 的数据源。 你会弄清楚的。 祝你好运。

    【讨论】:

    • 嘿,是的,你的权利,理想情况下,应该使用同时包含 ht/wt 的自定义对象。但这只是许多其他类似情况的一个示例,其中每个单元格的对象可能只是一个或两个(ht/wt)或 3 个(sBP/DBP/PP)并且每个条目的用户名都在一个对象中接收有值、时间戳、类别。它出现在这个入口对象类中。问题是我不想将我检索到的对象定义为条目,它可能是关于其他任何内容的条目。不仅仅是ht/wt。仅取决于我从类别表中调用的内容。也许我会以某种方式 ID 添加/划分条目->nsdict?
    • 好吧,您应该使用该自定义对象,但您还必须以某种方式识别它们。如果对象保存的数据无关紧要,您可能希望使用一个数组,将所有数据放入其中,然后将该数组放入您的数据源中。因此,当您在数据源中调用该对象时,它会返回一个数组,然后可以使用该数组来显示其内容,无论它们可能是什么。明白吗?:)
    • 嗯,假设来自 sql 的组合数据现在在 entriesArray 中。其中的数据形式为 - (1)Ht-Entry, (2)Wt-Entry, (3)Ht-Entry, (4)Wt-Entry。对于每个 indexPath,我需要这两个条目..
    • 该死,我刚刚在 CellForIndexPath 中创建了一个公式。 int entryIndex;首先,我将 indexPath.row 与 FieldCount 相乘,这是一个属性计数。像 ht 和 wt 所以 FieldCount = 2.limiterIndex=indexPath.row * fieldCount; NSMutableArray *returnArray = [NSMutableArray new]; for(int i=limiterIndex; i
    【解决方案2】:

    我将创建一个模型对象来检索所有条目的主数组。

    此模型对象还将具有根据传递的索引返回正确数据的方法。

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

    然后我会根据需要通过向单元格添加文本/字段视图来动态创建单元格。

    编辑:

    如果你想要一种方法可以改变它返回的内容,请创建一个类似的方法:

    weightString = (NSString*)[self.dataModel getDataAtIndex:indexPath.row forDataType:@"weight"];
    

    【讨论】:

    • 你能不能扩展一下,我有点明白了。但是你看,我创建的任何自定义对象都会有诸如“getWeightAtIndex”之类的方法,但是如果条目是关于血压读数的呢?脉压?高度?它可以是任何东西..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2019-12-20
    • 2017-12-04
    • 1970-01-01
    • 2018-09-15
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多