Cocoa 关于未在文件内容中进行替换的Xcode项目模板的特定帮助
我们正在尝试制作一个项目模板,但有关该模板的文档不完整或不存在 在对一些模板文件进行反向工程时,我们得出了以下结论。然而,它实际上不起作用 首先,我们发现项目模板应该安装在: ~/Library/Application-Support/Developer/Shared/Xcode/Project-Templates 我们已经制作了这个项目并在这里安装了它,这部分工作正常——我们可以在Xcode“新项目”选择器的“用户模板”部分看到这一点 项目文件夹包含以下文件。正如您所看到的,我希望文件名被替换(该部分有效),但正如您将看到的,我还希望文件的内容被替换;这不会发生Cocoa 关于未在文件内容中进行替换的Xcode项目模板的特定帮助,cocoa,xcode,macos,Cocoa,Xcode,Macos,我们正在尝试制作一个项目模板,但有关该模板的文档不完整或不存在 在对一些模板文件进行反向工程时,我们得出了以下结论。然而,它实际上不起作用 首先,我们发现项目模板应该安装在: ~/Library/Application-Support/Developer/Shared/Xcode/Project-Templates 我们已经制作了这个项目并在这里安装了它,这部分工作正常——我们可以在Xcode“新项目”选择器的“用户模板”部分看到这一点 项目文件夹包含以下文件。正如您所看到的,我希望文件名被替换
- ___项目名称\uuuuuuuuuuuuuxcodeproj
- ___项目名称标识器前缀.pch
- ___项目名称标识器icns
- ___PROJECTNAMEASIDENTIFIER\uuuuuuuuu代表.h
- ___PROJECTNAMEASIDENTIFIER\uuuuuuu Delegate.m
- ___PROJECTNAMEASIDENTIFIER\uuuuuuu模板.html
- Debug.xconfig
- 恩尔普洛伊
- Info.plist
- Release.xconfig
- TemplateInfo.plist
- TemplateIcon.icns-在新项目窗口中显示的图标
- Debug.xconfig
- 恩尔普洛伊
- Foo&Bar.xcodeproj
- Foo_uuuuuuuuuuuuuu前缀.pch
- Foo_______.icns
- Foo_uuuuuuuBardelegate.h
- Foo_uuuuuuuuuuBardelegate.m
- Foo_uuuuubartemplate.html
- Info.plist
- Release.xconfig
//
// «PROJECTNAMEASIDENTIFIER»Delegate.m
// «PROJECTNAME»
//
// Created by «FULLUSERNAME» on «DATE».
// Copyright «ORGANIZATIONNAME» «YEAR» . All rights reserved.
//
#import "«PROJECTNAMEASIDENTIFIER»Delegate.h"
@implementation «PROJECTNAMEASIDENTIFIER»Delegate
@end
明显的问题是,不知何故,我把TemplateInfo.plist做错了。但是,请再次注意,不仅我的特殊物品没有被取代,而且标准物品甚至没有被取代!所以这可能是一个更深层次的问题
但是,由于TemplateInfo.plist是我最好的假设,因此我提出了几个我尝试过的变体。两者都不起作用
要么:
{
FilesToMacroExpand = (
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_\_Prefix.pch",
"en.lproj/InfoPlist.strings",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_\_Prefix.pch",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_.icns",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_Delegate.h",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_Delegate.m",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_Template.html",
"Info.plist"
);
Description = "This project builds a cocoa-based \"element\" plugin for Sandvox.";
}
或:
更新:我还尝试添加了“FilesToRename”键,尽管__;似乎会自动导致重命名。这是plist的内容,以XML格式(因为有些人担心UTF-8的特性——是的,这是一个有效的plist):
描述
该项目为Sandvox构建了一个基于可可粉的“元素”插件。
文件宏扩展
«PROJECTNAMEASIDENTIFIER»_Prefix.pch
en.lproj/InfoPlist.strings
«PROJECTNAMEASIDENTIFIER».icns
«PROJECTNAMEASIDENTIFIER»委托人.h
«PROJECTNAMEASIDENTIFIER»Delegate.m
«PROJECTNAMEASIDENTIFIER»Template.html
Info.plist
文件存储名
___项目名称标识器icns
«PROJECTNAMEASIDENTIFIER».icns
___PROJECTNAMEASIDENTIFIER\uuuuuuuuu代表.h
«PROJECTNAMEASIDENTIFIER»委托人.h
___PROJECTNAMEASIDENTIFIER\uuuuuuu Delegate.m
«PROJECTNAMEASIDENTIFIER»Delegate.m
___PROJECTNAMEASIDENTIFIER\uuuuuuu模板.html
«PROJECTNAMEASIDENTIFIER»Template.html
___项目名称标识器前缀.pch
«PROJECTNAMEASIDENTIFIER»_Prefix.pch
___项目名称\uuuuuuuuuuuuuxcodeproj
«项目名称».xcodeproj
您可能希望使用“文件存储名”部分。以下内容来自基于PyObjC Cocoa文档的应用程序模板。它很好用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>This project builds a Cocoa-based application written in Python that uses the NSDocument architecture.</string>
<key>FilesToMacroExpand</key>
<array>
<string>«PROJECTNAME»_Prefix.pch</string>
<string>Info.plist</string>
<string>English.lproj/InfoPlist.strings</string>
<string>English.lproj/MainMenu.xib</string>
<string>English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib</string>
<string>main.py</string>
<string>«PROJECTNAMEASIDENTIFIER»Document.py</string>
<string>main.m</string>
</array>
<key>FilesToRename</key>
<dict>
<key>CocoaAppDocument.py</key>
<string>«PROJECTNAMEASIDENTIFIER»Document.py</string>
<key>CocoaDocApp_Prefix.pch</key>
<string>«PROJECTNAMEASIDENTIFIER»_Prefix.pch</string>
<key>English.lproj/CocoaAppDocument.xib</key>
<string>English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib</string>
</dict>
</dict>
</plist>
描述
该项目构建了一个基于Cocoa的应用程序,该应用程序是用Python编写的,使用NSDocument体系结构。
文件宏扩展
«项目名称»_Prefix.pch
Info.plist
English.lproj/InfoPlist.strings
English.lproj/main menu.xib
English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib
main.py
«PROJECTNAMEASIDENTIFIER»Document.py
main.m
文件存储名
CocoaAppDocument.py
«PROJECTNAMEASIDENTIFIER»Document.py
CocoaDocApp_Prefix.pch
«PROJECTNAMEASIDENTIFIER»_Prefix.pch
English.lproj/CocoaAppDocument.xib
English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib
另一个资源是杰西·格罗让的。它是免费的、开源的,可能会帮你省去以后的麻烦。有两种模板样式,以模板宏分隔符为特征:旧样式在UTF-8文件中使用MacRoman-guillamots,新样式在整个文件中使用三个下划线。你不能混搭。新样式仅适用于3.1及更高版本,您还必须在要替换的文件名中使用三个下划线。进一步了解Chris的回答(“有两种样式的模板…”),您可以在其他平台的模板中找到新样式的示例
以下摘录显示了几个使用三重底杆的典型替代变量的示例;如果您在Foo\uuuuuuu BarDelegate.m中使用这些变量来代替基于guillamot的变量,它应该可以工作
//
// ___PROJECTNAMEASIDENTIFIER___AppDelegate.m
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
//
#import "___PROJECTNAMEASIDENTIFIER___AppDelegate.h"
@implementation ___PROJECTNAMEASIDENTIFIER___AppDelegate
你为什么错过了那些“我刚才在想同一个问题 对我来说,在plistworks中添加文件时,我用php文件更改了html文件,并对其进行了解析。 但现在它只解析列表中的前几项。 旧的html文件仍然是:«PROJECTNAME» 就像这个程序不计算列表中有多少项
但是代码中的位置在哪里,它在哪里不这样做…?danwood,请添加您的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>This project builds a Cocoa-based application written in Python that uses the NSDocument architecture.</string>
<key>FilesToMacroExpand</key>
<array>
<string>«PROJECTNAME»_Prefix.pch</string>
<string>Info.plist</string>
<string>English.lproj/InfoPlist.strings</string>
<string>English.lproj/MainMenu.xib</string>
<string>English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib</string>
<string>main.py</string>
<string>«PROJECTNAMEASIDENTIFIER»Document.py</string>
<string>main.m</string>
</array>
<key>FilesToRename</key>
<dict>
<key>CocoaAppDocument.py</key>
<string>«PROJECTNAMEASIDENTIFIER»Document.py</string>
<key>CocoaDocApp_Prefix.pch</key>
<string>«PROJECTNAMEASIDENTIFIER»_Prefix.pch</string>
<key>English.lproj/CocoaAppDocument.xib</key>
<string>English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib</string>
</dict>
</dict>
</plist>
//
// ___PROJECTNAMEASIDENTIFIER___AppDelegate.m
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
// Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
//
#import "___PROJECTNAMEASIDENTIFIER___AppDelegate.h"
@implementation ___PROJECTNAMEASIDENTIFIER___AppDelegate