0

我开始使用 RubyMotion 和 ProMotion。我正在构建一个表格视图,我想将数据移出到外部文件中以使其更易于管理。这是我到目前为止所拥有的:

class MasterScreen < PM::TableScreen
  title 'States'

  def table_data
    [{
      title: "Northwest States",
      cells: [
        { title: "Oregon", action: :view_details, arguments: { state: @oregon }},
        { title: "Washington", action: :view_details, arguments: { state: @washington }}
      ]
    }]
  end

  def view_details
    open DetailScreen.new(nav_bar: true)
  end
end

我想将状态名称(基本上是单元格标题)移动到可以加载和迭代的 YAML 或 JSON 文件中。我怎样才能实现这样的目标?


更新:我设法弄清楚如何从文件中加载文本。

首先,我添加bubble-wrap到我的Gemfile并运行bundle install. BubbleWrap 提供了辅助方法App.resources_path

my_app/resources/states.txt我有一个状态列表,用新行分隔:

Oregon
Washington
Foobar

在我的表视图控制器中,我读取文件并将文件拆分为行数组。

class MasterScreen < PM::TableScreen
  title 'States'

  def on_load
    data = File.read("#{App.resources_path}/states.txt")
    @states = data.lines
  end

  def table_data
    [{
      title: "Northwest States",
      cells: @states.map do |state|
        {
          title: state,
          action: :view_details,
          arguments: { state: state }
        }
      end
    }]
  end

  def view_details(arguments)
    open DetailScreen.new(nav_bar: true, title: arguments[:state])
  end
end

这行得通,但这只是我试图做的事情的一部分。我仍然想使用 YAML 之类的结构来表示标题和副标题。做这种事情的 RubyMotion 方法是什么?

4

1 回答 1

0

想出了如何去做。我遇到了一个名为motion-yaml. 只需将它添加到您的 Gemfile 中,将您的 YAML 文件添加到您的resources目录中,然后像在 Ruby 中使用 YAML 一样使用它。

data = YAML.load(File.read("#{App.resources_path}/my_yaml_file.yml"))

注意:您需要添加bubble-wrap到 Gemfile 才能拥有App.resources_path. 我不确定是否有没有气泡包装的简单方法。

于 2014-05-28T04:47:47.883 回答