Ios 将MotionModel记录排序为基于日期的部分以插入升级表屏幕的最有效方法?

Ios 将MotionModel记录排序为基于日期的部分以插入升级表屏幕的最有效方法?,ios,ruby,rubymotion,motionmodel,Ios,Ruby,Rubymotion,Motionmodel,我正在为iOS应用程序使用RubyMotion、ProMotion和MotionModel。我们将每天存储多个对日期/时间敏感的条目,并在一个大的TableView中列出它们。现在,条目显示在一个大列表中: 我想做的是按日期对条目进行分段,以提高可读性: 我假设我可以通过循环一次模型条目,提取所有唯一日期的数组,然后运行日期数组并提取匹配的条目来实现这一点。这会起作用,但我忍不住想,也许有更好的方法可以用一些我不熟悉的Ruby魔法来解决这个问题。任何建议都将不胜感激 如果阅读本文的人了解Ru

我正在为iOS应用程序使用RubyMotion、ProMotion和MotionModel。我们将每天存储多个对日期/时间敏感的条目,并在一个大的TableView中列出它们。现在,条目显示在一个大列表中:

我想做的是按日期对条目进行分段,以提高可读性:

我假设我可以通过循环一次模型条目,提取所有唯一日期的数组,然后运行日期数组并提取匹配的条目来实现这一点。这会起作用,但我忍不住想,也许有更好的方法可以用一些我不熟悉的Ruby魔法来解决这个问题。任何建议都将不胜感激

如果阅读本文的人了解Ruby或RubyMoon但不熟悉促销,我需要返回的数据格式如下:

[{
  title: "June 12, 2013",
  cells: [{
    title: "10:00am"
  },{
    title: "3:15pm"
  },{
    title: "7:00pm"
  },{
    title: "10:15pm"
  }]
},{
  title: "June 06, 2013",
  cells: [{
    title: "10:00am"
  },{
    title: "3:15pm"
  },{
    title: "7:00pm"
  },{
    title: "10:15pm"
  }]
}]
编辑:

按逆时间顺序生成表格单元格的当前代码:

[{
  cells: Entries.order{|one, two| two.entry_date <=> one.entry_date}.all.map{ |f|
    {
    title: Time.at(f.entry_date).strftime("%I:%M %p"), #"%m/%d/%Y"
    action: :show_entry,
    arguments: 
      {
        entry: f 
      }
    }
  }
}]
[{
单元格:Entries.order{1,2{2.entry{u date 1.entry{u date}.all.map{f|
{
标题:Time.at(f.entry_date).strftime(“%I:%M%p”),#%M/%d/%Y
操作::显示\u条目,
论据:
{
参赛作品:f
}
}
}
}]

假设
时间
有您的时间实例数组:

df=NSDateFormatter.new.tap { |f| f.setDateStyle(NSDateFormatterMediumStyle) }
tf=NSDateFormatter.new.tap { |f| f.setTimeStyle(NSDateFormatterMediumStyle) }
times.inject({}) { |a, t|  (a[df.stringFromDate(t)] ||= []) << 
  tf.stringFromDate(t); a }.map { |k, v| Hash[title: k, cells: v.map { |t| {title: t} } ] }
df=NSDateFormatter.new.tap{| f | f.setDateStyle(nsdateformatterminiumstyle)}
tf=NSDateFormatter.new.tap{| f | f.setTimeStyle(NSDateFormatterMediumStyle)}

times.injection({}){a,t|(a[df.stringFromDate(t)]| |=[])假设
times
有您的时间实例数组:

df=NSDateFormatter.new.tap { |f| f.setDateStyle(NSDateFormatterMediumStyle) }
tf=NSDateFormatter.new.tap { |f| f.setTimeStyle(NSDateFormatterMediumStyle) }
times.inject({}) { |a, t|  (a[df.stringFromDate(t)] ||= []) << 
  tf.stringFromDate(t); a }.map { |k, v| Hash[title: k, cells: v.map { |t| {title: t} } ] }
df=NSDateFormatter.new.tap{| f | f.setDateStyle(nsdateformatterminiumstyle)}
tf=NSDateFormatter.new.tap{| f | f.setTimeStyle(NSDateFormatterMediumStyle)}

times.injection({}){a,t |(a[df.stringFromDate(t)]|=[]))哇。我试图弄明白这一点,但我想我已经学会了:)所以我尝试更新它来整合我模型中的信息,然后我崩溃了。我以前应该包括它,但现在编辑了这篇文章来显示我当前的表生成代码。知道整合这两者的方法吗?还有你建议使用的资源要加快这种高级数据映射的速度?当我需要帮助时,能得到帮助真是太棒了,但我也希望能够理解正在发生的事情。把它分成几部分,即在map调用之前,看看你得到了什么。在学习ruby时,理解如何使用inject、map和动态构建哈希是值得的。EDIT:没关系,他说是的,您需要循环@aceofspades在这里创建的哈希,然后相应地将组格式化为哈希数组。类似于
time_hash.each{title,cells{title:title,cells:cells}
感谢你们的帮助,伙计们。我有一些研究要做,但迟早会流行起来:)哇。我试图理解这一点,但我想我有一些学习要做:)所以我尝试更新它以整合我模型中的信息,然后我崩溃了。我以前应该包括它,但现在编辑了帖子以显示我当前的表格生成代码。知道如何集成这两种方法吗?以及您建议使用哪些资源来加快这一高级数据映射的速度?当我需要帮助时,能够获得帮助是很了不起的,但我也希望能够理解正在发生的事情。将其分解为多个部分,即在映射调用之前,看看您得到了什么。了解如何使用inject,妈妈p、 在学习ruby时,动态构建哈希是一个很好的选择。编辑:没关系,他已经在这么做了。(上一篇)是的,你需要循环@aceofspades在这里创建的哈希,然后将你的组格式化成一个哈希数组。类似于
time\u hash.each{title,cells{title:title,cells:cells}}
谢谢你们的帮助,伙计们。有一些学习要做,但迟早会明白的:)