Ruby 如何在Xcodeproj中获取PBXFileReference的目标

Ruby 如何在Xcodeproj中获取PBXFileReference的目标,ruby,xcode,xcode-project,xcodeproj,Ruby,Xcode,Xcode Project,Xcodeproj,我正在尝试编写一个Ruby脚本,它将从Xcode项目中删除某些文件。我可以根据绝对路径找到文件,并使用PBXFileReference的方法将其从项目中删除。但是,这使得源文件(例如.m或.swift文件)处于其所属目标的“编译源”构建阶段,但没有名称 我知道我还需要从目标中删除该文件,但在PBXFileReference和目标()之间似乎没有简单的链接 根据我所能了解的,我需要迭代每个项目的目标,然后迭代该目标的or,寻找我已经拥有的PBXFileReference 这是正确的还是我缺少了一

我正在尝试编写一个Ruby脚本,它将从Xcode项目中删除某些文件。我可以根据绝对路径找到文件,并使用
PBXFileReference
的方法将其从项目中删除。但是,这使得源文件(例如
.m
.swift
文件)处于其所属目标的“编译源”构建阶段,但没有名称

我知道我还需要从目标中删除该文件,但在
PBXFileReference
和目标()之间似乎没有简单的链接

根据我所能了解的,我需要迭代每个项目的目标,然后迭代该目标的or,寻找我已经拥有的
PBXFileReference


这是正确的还是我缺少了一些明显的链接,例如
文件\u ref.target\u成员身份

不确定这是何时引入的,但从
xcodeproj
版本1.15.0起,您可以获得与文件引用关联的生成文件,其中包括:

if (object.is_a?(Xcodeproj::Project::Object::PBXFileReference))
    if (!object.real_path.exist?)
        object.remove_from_project
    end
end

project.save(project_path)
file_ref.build_files
从:

方法:Xcodeproj::Project::Object::PBXFileReference#build_文件

#构建#u文件⇒ 数组

返回与当前文件引用关联的生成文件

返回:
(数组)
-与当前文件引用关联的生成文件

看起来这应该可以做到:

file_ref.build_files.each { |file| file.remove_from_project }

你发现了吗?@lemonlimepomelo不幸的是,我最终通过迭代每个目标的文件并寻找匹配项来解决这个问题。脏,但它能工作。如果您添加关于代码如何回答问题的解释,那么纯代码答案将变得非常有用。