【问题标题】:Sort File List in Xcode?在 Xcode 中排序文件列表?
【发布时间】:2008-10-27 05:20:29
【问题描述】:

Xcode 中有没有办法按字母顺序对 Classes 文件夹下的文件列表进行排序?

我知道我可以拖拽它们,但是有大量文件很痛苦。

我很惊讶我不能右键单击文件夹并说要排序。

【问题讨论】:

    标签: xcode


    【解决方案1】:

    单击文件夹,然后单击编辑 > 排序 > 按名称

    【讨论】:

    • XCode 4 中似乎没有该选项。知道如何在新版本中执行此操作吗?
    • 我已经为 XCode4 添加了一个后续问题,因为这还没有收到。 stackoverflow.com/questions/6024179/sort-file-list-in-xcode4
    • 不确定 Xcode 的早期版本,但在 4.5 中它位于 Edit > Sort > By Name 下。或者,控制单击然后选择“按名称排序”
    • @SnowCrash 我的 Edit / Sort / By Name 在我选择了 Build Phases 时是灰色的。
    • @SnowCrash,每次添加新文件时都必须手动执行吗?我正在使用 XCode 5,但当我添加新文件时它似乎不会自动重新排列排序顺序。
    【解决方案2】:

    这是一个 Ruby 脚本,它将对 Xcode 4 项目文件中各自组内的所有文件进行排序(可能也是 Xcode 3,但我没有尝试过)。

    用法:

    ruby sort.rb <infile> <outfile>
    

    其中 是未排序的 .pbxproj 文件,而 将是排序后的版本。不要让它们成为同一个文件。

    #!/usr/bin/env ruby
    
    state = :primary
    group = []
    file_count = group_count = 0
    
    File.open ARGV[0] do |infile|
      File.open ARGV[1], 'w' do |outfile|
        infile.each_line do |line|
          case state
    
          when :primary
            # copy lines until and including "children = ("
            outfile.write line
            state = :group if line =~ /^\s*children\s*=\s*\x28\s*$/
    
          when :group
            if line =~ /^\s*[0-9A-F]+\s*\/\* (.*) \*\/,\s*$/
              # add file to current group if "<guid> /* <filename> */,"
              group << [$1,line]
              file_count += 1
    
            else
              # otherwise, output sorted files,
              # empty the group, and go back to primary state
              group.sort.each do |fn,ln|
                outfile.write ln
              end
    
              state = :primary
              group = []
              outfile.write line
              group_count += 1
            end
    
          end
        end
      end
    end
    
    puts "Sorted #{file_count} files in #{group_count} groups"
    

    【讨论】:

      【解决方案3】:

      jedediah 的 ruby​​ 脚本效果很好。要对正在复制的资源进行排序,您可以添加:

      state = :group if line =~ /^\s*files\s*=\s*\x28\s*$/
      

      请注意,排序区分大小写(大写字母在前)。要使其不敏感,请使用:

      group << [$1.downcase,line]
      

      【讨论】:

        【解决方案4】:

        在 XCode5 中确实没有一个简单的解决方案。

        • 我在文本编辑器中打开了 pbxproj 文件。
        • 向下导航到 /* Begin PBXResourcesBuildPhase 部分 */
        • 选择文件中的所有内容。
        • 复制到新的文本文档。
        • 将 /* 替换为 \t(制表符)
        • 全选,复制粘贴到空白的excel文档中。你应该有 2 列数据
        • 在位置 2 插入一列
        • 为该列创建所有行 /*
        • 对第 3 列的工作表进行排序
        • 复制所有数据并粘贴回 pbxproj 文件中的部分
        • 保存文件

        这应该对项目的“复制捆绑资源”部分进行排序。

        我觉得这样做很脏,但是嘿 - 它有效

        【讨论】:

          【解决方案5】:

          Czar 以你想要的方式拥有它有很多好处,而不是一直自动排序。

          某些类可能以某种方式相关,但名称并不相邻,我肯定会使用它。 :)

          【讨论】:

          • -1 因为“您不必总是对文件进行排序”不是“如何对文件进行排序?”的答案
          • 我无法发表评论,因为我没有任何代表。所以它作为答案出现了。
          • 就个人而言,我认为如果人们想提供帮助,他们不应该被改装。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-04
          • 1970-01-01
          • 2012-10-06
          相关资源
          最近更新 更多