37

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

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

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

4

5 回答 5

40

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

于 2008-10-27T06:05:31.337 回答
4

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

用法:

ruby sort.rb <infile> <outfile>

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

#!/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"
于 2011-04-03T12:33:13.400 回答
0

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

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

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

group << [$1.downcase,line]
于 2012-03-01T14:24:49.930 回答
0

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

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

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

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

于 2014-05-05T08:57:24.583 回答
-1

Czar 以您想要的方式拥有它有很多好处,而不是始终自动对其进行排序。

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

于 2010-11-24T12:32:30.157 回答