【问题标题】:Creating sub-groups in XCode 4 Templates在 XCode 4 模板中创建子组
【发布时间】:2011-03-26 22:09:54
【问题描述】:

虽然有很多文档和示例在 XCode 3 中创建模板并将它们转换为 XCode4 模板是一场噩梦......

首先是我发现的:

  • BorealKiss 为声明者提供了一个很好的教程
  • Cocos2d 有一些很好的例子可以让你的模板更加“进化”

但他们都没有回答这个示例问题:

如何在其他文件夹中创建 Folders Insider

例如,如果你想在一个组中包含文件,你应该这样写:

<key>Definitions</key>
<dict>
    <key>File1.h</key>
    <dict>
        <key>Group</key>
        <string>Group1</string>
        <key>Path</key>
        <string>File1.h</string>
        <key>TargetIndices</key>
        <array/>
    </dict>
    <key>File1.m</key>
    <dict>
        <key>Group</key>
        <string>Group1</string>
        <key>Path</key>
        <string>File1.m</string>
    </dict>
</dict>

<key>Nodes</key>
<array>
    <string>File1.h</string>
    <string>File1.m</string>
</array>

但是,例如,您将如何将 Group1 包含在 Group2 中。

我尝试了很多很多东西,和祖先一起玩,但都没有奏效。 任何建议或任何文档(我在那些 XCode 模板上都找不到)将不胜感激。

【问题讨论】:

    标签: xcode xcode4


    【解决方案1】:

    我已经尝试过多次修改TemplateInfo.plist 并且我也尝试过创建一个子组并将文件放入其中。终于找到了解决办法:

    定义部分:

    <key>Definitions</key>
    <dict>
        <key>main.h</key>
        <dict>
            <key>Path</key>
            <string>main.h</string>
            <key>Group</key>
            <array>
                <string>parent</string>
                <string>child</string>
            </array>
        </dict>
    </dict>
    

    在节点部分:

    <key>Nodes</key>
    <array>
        <string>main.h</string>
    </array>
    

    上面的代码将创建组父母和孩子。并且 main.h 在孩子中

    Project
    --parent
    ---child
    ----main.h
    

    【讨论】:

    • 小伙伴谢谢!!你的答案很清楚,解决了数小时的搜索和调整!我冒昧地稍微编辑了您的答案,以展示如何使其适用于多个父母
    • 不客气。你成功从项目模板中包含文件夹引用了吗?请看看我对此的问题link
    • 创建群组还需要做些什么吗?照原样使用您的示例,我无法为 main.h 创建一个组
    • @little-buddy,您能否解释一下定义和节点应该在 xml 文件中的确切位置以便它们工作?我有一个带有 Options 的 XML 来保存文件,那么它们到底应该在哪里?谢谢。
    • 我知道这是针对项目模板的,知道是否可以对文件模板执行相同的操作TextSubstitutionFileTemplateKind
    【解决方案2】:

    我自己也一直在努力解决这个问题。 作为一种解决方法,我在我的 TemplateInfo.plist 位置创建并添加了一个文件夹(在您的情况下,应该是名为 Group1 的文件夹)。文件夹布局(子文件夹和文件)与我希望它们在我的项目源树中的相同(例如,文件夹“Group1”有子文件夹“Group2”,文件夹“Group2”有文件 File1.h 和 File1.m 等)。 然后我只需在我的 TemplateInfo.plist 文件中添加根文件夹(Group1),方法是在定义部分定义它并将其添加到节点部分,如下所示:

    <key>Definitions</key>
    <dict>
    <key>Group1/</key>
    <dict>
    <key>Path</key>
    <string>Group1/</string>
    <key>TargetIndices</key>
    <array/>
    </dict>
    
    <key>Nodes</key>
    <array>
    <string>Group1</string>
    </array>
    

    【讨论】:

    • 这是一个有趣的解决方案,但它似乎不起作用,或者我可能做得不对。那么如何定义 Group1 中的文件呢?因为它给我留下了一个奇怪的行为,每个子文件夹都被递归复制 Group1=>(Group2=>(Group1=>Group2)) 事物类型
    • 那么不需要定义 Group2 中的文件,因为它们是完整的 xcode 文件。我没有在 TemplateInfo.plist 中定义它们,而是简单地创建新的 XCode 文件(例如在某些项目中创建文件时),然后在文件本身中编写标题、方法等。然后我将它们复制到我的模板位置的 Group2 子文件夹中。我认为您遇到的另一个问题是因为您可能也在模板的节点部分定义然后添加 Group2。为 Group1 完成此操作后,无需对其子内容进行相同操作,因为它们会自动添加
    • denicija 非常感谢,但它不适用于我的 XCode 4 版本(Build 4A304a)。当我按照你提到的方式添加一个组时,我添加了一个奇怪的行为(文件夹递归地添加自己)
    【解决方案3】:

    对于任何需要帮助的人,这是在 Xcode 12.4 上,这是一个项目模板。

                            <key>Nodes</key>
                        <array>
                            <string>ViewController.swift:comments</string>
                            <string>ViewController.swift:imports:importCocoa</string>
                            <string>ViewController.swift:implementation(___FILEBASENAME___: UIViewController)</string>
                            <string>ViewController.swift:implementation:methods:viewDidLoad(override func viewDidLoad(\))</string>
                            <string>ViewController.swift:implementation:methods:viewDidLoad:super</string>
                            <string>Info.plist:UIMainStoryboardFile</string>
                            <string>Info.plist:UIApplicationSceneManifest:UISceneStoryboardFile</string>
                            <string>Base.lproj/Main.storyboard</string>
                            <string>Some/MainCoordinator.swift</string>
                            <string>Some/Other/TestClass.swift</string>
                        </array>
                        <key>Definitions</key>
                        <dict>
                            <key>Base.lproj/Main.storyboard</key>
                            <dict>
                                <key>Path</key>
                                <string>Main.storyboard</string>
                                <key>SortOrder</key>
                                <integer>98</integer>
                            </dict>
                            <key>Info.plist:UIMainStoryboardFile</key>
                            <string>&lt;key&gt;UIMainStoryboardFile&lt;/key&gt;
                                &lt;string&gt;Main&lt;/string&gt;
                            </string>
                            <key>Some/MainCoordinator.swift</key>
                            <dict>
                                <key>Group</key>
                                <array>
                                    <string>Some</string>
                                </array>
                                <key>Path</key>
                                <string>MainCoordinator.swift</string>
                            </dict>
                            <key>Some/Other/TestClass.swift</key>
                            <dict>
                                <key>Group</key>
                                <array>
                                    <string>Some</string>
                                    <string>Other</string>
                                </array>
                                <key>Path</key>
                                <string>TestClass.swift</string>
                            </dict>
                        </dict>
    

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 2023-03-18
      • 2013-03-07
      • 2016-04-26
      • 2014-11-30
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多