如何在Xcodeproj中获取PBXFileReference的目标

时间:2015-10-02 13:26:39

标签: ruby xcode xcode-project xcodeproj

我试图编写一个Ruby脚本来删除Xcode项目中的某些文件。我可以根据绝对路径找到这些文件,并使用PBXFileReference .m方法从项目中删除它们。但是,这会在"编译源"中留下源文件(例如.swiftPBXFileReference文件)。构建其所属目标的阶段,但没有名称。

remove_from_project

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

根据我的建议,我需要遍历每个项目的目标,然后遍历该目标的PBXNativeTargetfiles {{3}寻找我已经拥有的file_ref.target_memberships

这是正确的还是我错过了一些明显的链接,例如should_merge(...)

2 个答案:

答案 0 :(得分:0)

' Add reference to Microsoft Internet Controls (SHDocVw)
' Add reference to Microsoft HTML Object Library

Dim ie As Object
Dim name As String
Dim Doc As HTMLDocument

Set ie = New InternetExplorer
ie.Visible = 1

ie.navigate "<URL>"
While ie.Busy Or ie.readyState <> 4
    DoEvents
Wend
Set Doc = ie.document

Dim anchors As IHTMLDOMChildrenCollection
Dim anchor As IHTMLAnchorElement
Dim i As Integer

Set anchors = Doc.querySelectorAll("tr[class~='even'] a")

If Not anchors Is Nothing Then
    For i = 0 To anchors.Length - 1
        Set anchor = anchors.item(i)
        If anchor.getAttribute("href") = "/italy/serie-a-2015-2016/" Then
            Range("E8").Value = anchor.innerHTML
        End If
    Next
End If
ie.Quit

答案 1 :(得分:0)

不确定何时引入此版本,但从xcodeproj版本1.15.0开始,您可以通过以下方式获取与文件引用关联的构建文件:

file_ref.build_files

来自documentation

方法:Xcodeproj :: Project :: Object :: PBXFileReference#build_files

#build_files ⇒ Array<PBXBuildFile>

返回与当前文件引用关联的构建文件。

返回: (Array<PBXBuildFile>)-与当前文件引用关联的构建文件。

看起来像这样应该可以解决问题:

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