如何以编程方式从 Xcode 项目中删除组?
How to remove a group from Xcode project programmatically?
我需要通过批处理管理一个 Xcode 项目,部分删除某些组。
据我了解,唯一的工具是 xcodeproj。或者编写自己的 pbxproj 文件解析器。
所以我安装了xcodeproj。
首先,没有合理的文档,新手很容易看懂。我假设我需要写一些 rb 文件。并执行为 ruby xcodeproj_batch.rb
这是我所做的。但这不起作用。此脚本找到所需的组,但不会删除它。
xcodeproj_batch.rb:
require 'rubygems'
require 'xcodeproj'
project_path = '../TestProject/TestProject.xcodeproj'
project = Xcodeproj::Project.open(project_path)
groupToDelete = Xcodeproj::Project::PBXGroup
project.groups.each do |group|
if group.name == 'Test'
groupToDelete = group
puts 'cleared: '+group.name
groupToDelete.clear
end
end
project.groups.delete(groupToDelete)
project.save(project_path)
我假设这个脚本有错误。我没有 xcodeproj 和 ruby 背景。我在这里尝试以两种不同的方式删除该组。我错过了什么?
我发现了问题,我需要使用 remove_from_project
而不是 clear
:
require 'rubygems'
require 'xcodeproj'
project_path = '../TestProject/TestProject.xcodeproj'
project = Xcodeproj::Project.open(project_path)
groupToDelete = nil
project.groups.each do |group|
if group.name == 'Test'
groupToDelete = group
puts 'cleared: '+group.name
# add break;
end
end
groupToDelete.remove_from_project
project.save(project_path)
我需要通过批处理管理一个 Xcode 项目,部分删除某些组。
据我了解,唯一的工具是 xcodeproj。或者编写自己的 pbxproj 文件解析器。
所以我安装了xcodeproj。
首先,没有合理的文档,新手很容易看懂。我假设我需要写一些 rb 文件。并执行为 ruby xcodeproj_batch.rb
这是我所做的。但这不起作用。此脚本找到所需的组,但不会删除它。
xcodeproj_batch.rb:
require 'rubygems'
require 'xcodeproj'
project_path = '../TestProject/TestProject.xcodeproj'
project = Xcodeproj::Project.open(project_path)
groupToDelete = Xcodeproj::Project::PBXGroup
project.groups.each do |group|
if group.name == 'Test'
groupToDelete = group
puts 'cleared: '+group.name
groupToDelete.clear
end
end
project.groups.delete(groupToDelete)
project.save(project_path)
我假设这个脚本有错误。我没有 xcodeproj 和 ruby 背景。我在这里尝试以两种不同的方式删除该组。我错过了什么?
我发现了问题,我需要使用 remove_from_project
而不是 clear
:
require 'rubygems'
require 'xcodeproj'
project_path = '../TestProject/TestProject.xcodeproj'
project = Xcodeproj::Project.open(project_path)
groupToDelete = nil
project.groups.each do |group|
if group.name == 'Test'
groupToDelete = group
puts 'cleared: '+group.name
# add break;
end
end
groupToDelete.remove_from_project
project.save(project_path)