使用具有不同单元格数的部分的 UITableView 的核心数据
Posted
技术标签:
【中文标题】使用具有不同单元格数的部分的 UITableView 的核心数据【英文标题】:Use Core Data With UITableView With Sections That Have A Different Number Of Cells 【发布时间】:2015-07-23 17:09:43 【问题描述】:所以我有一个 TableView 包含可能包含不同数量的单元格的部分,具体取决于用户输入的行的详细信息。我试图了解有关保存的更多信息,并希望制作一个简单的应用程序,允许用户保存食谱成分。例如,我可以有 5 个不同的部分,其中包含 5 种不同类型的食物,例如 -> 香蕉:数量 - 2 卡路里 - 10 详细信息 - 切片,苹果数量 - 3 卡路里 - 20 详细信息 - 捣碎
我怎样才能有条理地保存所有信息。我知道如何使用 Core Data 保存单个单元格,但难点在于每个部分可以包含唯一数量的单元格,然后这些数据全部保存到一个数据条目中。这就像数组中的数组中的数组。我也有一种感觉,我必须使用字典。我似乎无法构建所有这些数据。任何人都可以帮助或对我应该如何攻击这个有任何提示吗?顺便说一句,我正在使用 Swift。
TableView 的某一部分可能看起来像的图片:
【问题讨论】:
【参考方案1】:有几种方法可以解决这种情况。想到的第一个解决方案是为要显示的每个部分存储一个唯一的数组。例如。一个水果数组、蔬菜数组等。如果你这样做了,当你从 Core Data 中获取数据时,你会将这些项目存储在适当的数组中,并在你的 numberOfRowsForSection
中执行类似以下的操作:
switch (section)
case 0:
return fruit.count()
case 1:
return vegetable.count()
default:
return 0
将根据您当时所在的任何部分调用该 switch 语句。如果您使用不同的路线(如字典),而不是返回不同数组的计数,您可以 return typeDict.objectForKey("fruit")
代替。
【讨论】:
好吧,让我们先来说说我的食谱中的项目是[“鸡肉”、“洋葱”、“橙皮”、“大蒜”]。他们每个人都有一个与其数组元素相对应的部分。你是说我应该进一步分解它并将它们放在各自的水果,肉类等阵列中。还是他们每个人都有自己的阵列。前任。鸡阵列,洋葱阵列,橙皮阵列。此外,请注意这些部分具有自己的某些值,例如数量、卡路里和详细信息行。然后我是否应该将这些值保存为字典数组。前任。 chickenArray = [数量:1,详细信息:[hi,bye]] 然后我把那个食谱命名为鸡肉食谱。所以现在 chicken recipe 包含 4 个数组,其中包含唯一的字典。然后我制作了一个三明治食谱,现在包含 5 个数组及其字典。你会怎么做来组织所有这些事情,这样它们就不会失控。我对 Core Data 了解不多,整天都在看视频试图弄清楚,但这不会迫使我创建很多实体吗? 我只是以水果和蔬菜为例,因为我不知道你会吃什么。 =) 根据您刚才的描述,听起来您只需 2 个实体就可以做到这一点……配方和成分。配方可以包含属性:recipeId、名称、准备时间等。成分可以包含:名称、数量、详细信息、recipeId。这样,您添加每个配方并使用配方 ID(或关系)连接它们。您说您对 Core Data 了解不多,但是您有一般的数据库经验吗? 老实说,我没有太多的数据库经验,但我可以通过示例轻松解决问题,而且我更像是一个视觉化的人。不过我理解你的反应。只是为了通过您的示例说明这一点,成分将更像是一个包含所有值的字典数组,然后它们将与由 recipeId 链接的一个食谱分开(考虑到您的意思是每种成分并将它们连接起来,而不是“每个食谱并连接它们”。然后,这将允许我在新的 uitableview 中将每个食谱显示为单元格,当用户单击它们时,它将显示成分。 在他们自己的部分。这一切都是有道理的,似乎并不困难。但是,我必须承认,我不一定知道实现这一点的语法。知道事情正在被保存但你看不到实际的数组有点令人困惑。对不起,如果我听起来太业余了,但我只是说实话。以上是关于使用具有不同单元格数的部分的 UITableView 的核心数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Docs 电子表格的列中计算具有任何值(字符串或数字)的单元格数
swift in UI test(测试UITableView中的单元格数)