我目前正在使用Xcode中的一个应用程序,我在其中添加了一个运行shell脚本的Build Phase.
该脚本从桌面查找资源并将其复制到应用程序.如果文件/文件夹不存在,脚本应取消应用程序的构建.
我已经尝试了各种各样的东西来阻止构建,xcodebuild clean
但我无法弄明白.这是我有的:
if [ -d ~/Desktop/MyFolder ]; then
cp -r ~/Desktop/MyFolder ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MyFolder
else
#Stop the build
fi
Run Code Online (Sandbox Code Playgroud)
有没有办法让脚本告诉Xcode停止构建?如果是这样,我该怎么办?
我有一个shell脚本,用于检查文件夹是否有一定数量的文件,并向用户显示错误消息.我使用applescript来显示错误消息.有没有办法将shell脚本的变量传递给AppleScript?
这是我有的:
declare -i count=5;
osascript -e 'tell app "Xcode" to display dialog "Counted $count items." buttons {"Continue"}'
Run Code Online (Sandbox Code Playgroud)
我想要输出,Counted 5 items.
但它只是出来的Counted $count items.
如何我将shell脚本变量传递给applescript?
我遇到的问题非常具体,有点难以解释.如果您需要更多有关任何细节,请与我们联系 我有一个名为的抽象类System
.为了保存我的System
对象,我有一个SystemManager
包含System
s 的列表,以及一些用于操作它的函数.里面包含:
List<System> systems = new ArrayList<System>();
Run Code Online (Sandbox Code Playgroud)
现在,我想创建另一个抽象类,它是一种特定类型的System
被调用RenderSystem
.这将继承,System
但还有一些功能.我还想创建一个RenderSystemManager
应该做的事情SystemManager
,除了一些额外的功能.此外,System
我希望它有一个列表,RenderSystem
以确保程序员不会System
在其中放置任何常规对象,而不是在管理器中有一个列表.我最初的本能就是继承SystemManger
,只需将列表类型更改为RenderSystem
:
systems = new ArrayList<RenderSystem>();
Run Code Online (Sandbox Code Playgroud)
Java不允许将此作为系统的类型是System
不RenderSystem
.我会假设考虑RenderSystem
继承而已System
.我能想到的一种方式来解决这个问题是复制和粘贴,从所有的代码SystemManager
进入RenderSystemManager
,只是改变的代码行是:
List<RenderSystem> systems = new ArrayList<RenderSystem>();
Run Code Online (Sandbox Code Playgroud)
我的另一个本能是覆盖addSystem(System system)
函数以确保它只处理RenderSystem
,但程序员可能会认为即使它不起作用也允许它们执行.
@Override
public void addSystem(System system)
{
if (system instanceof RenderSystem)
{
super.addSystem(system);
}
}
Run Code Online (Sandbox Code Playgroud)
但这些看起来并不优雅.有人有什么建议吗?