我有一个现有的应用程序,基本上是一个购物清单应用程序,我正在尝试向其中添加一些甜美的SwiftUI。
我的问题是实时预览更新无法正常工作-不断显示“自动预览更新已暂停”警告。我点击了恢复按钮,它构建了应用程序,显示了当前视图,并且该警告立即再次显示。如果不使用“恢复”按钮,我将看不到对画布中反映的代码所做的更改。
这是在Xcode 11.1和11.2 beta 2中发生的。我在SO上几乎找不到其他提及,而在Apple的Dev论坛上有一个线程没有答案。
答案 0 :(得分:24)
答案 1 :(得分:10)
所有给出的答案的问题是,如果要使预览正常工作,您需要在调试模式下检查或取消选中脚本。
这里是使用环境变量的便捷替代方法。
这真的很简单
在if
语句中嵌入脚本的所有内容,以检查我们是否正在使用预览。如果我们处于预览状态,则不要运行脚本的内容,否则,请运行它。而且您不必只为发行版本牺牲脚本。
这是模板:
if [ $ENABLE_PREVIEWS == "NO" ]
then
# your code to execute here
else
echo "Skipping the script because of preview mode"
fi
在下面一个完整的示例中,我使用了一个完整的示例来更改我的构建版本号
# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run.
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)
if [ $ENABLE_PREVIEWS == "NO" ]
then
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
else
echo "Skipping Bump of version"
echo $ENABLE_PREVIEWS
fi
答案 2 :(得分:9)
对我来说,当我使用旧版构建系统时,Canvas无法正常工作。
您可以通过更改它,
文件->项目设置(或工作区设置)->构建系统->选择“新建构建系统(默认)。
如前所述,它是默认选项。如果出于任何原因选择了Legacy构建系统,Canvas将无法正常工作。
于2020年6月30日编辑:
我们不再在Xcode 12 Beta中拥有Legacy Build System
。
答案 3 :(得分:2)
我最终向Apple发送了反馈,他们做出了回应。我的目标中有一个构建脚本,该脚本会自动增加构建号。如果我删除了该脚本,则预览将按预期进行。
因此,如果遇到此问题,请在“目标”->“构建阶段”->“运行脚本”中删除所有内容,然后重试。画布预览应按预期更新。
答案 4 :(得分:0)
在实验中,我发现ENABLE_PREVIEWS
在SwiftUI项目中始终设置为YES
。相反,我发现在普通版本中,Xcode集TARGET_DEVICE_MODEL
在SwiftUI中没有。
所以解决方案类似于此答案中描述的解决方案:https://stackoverflow.com/a/62216533/833197,但使用了差异变量。
另一方面,在最新的Xcode版本中,在构建脚本的Info.plist
中进行任何设置似乎都为时已晚。在下一次构建之前,将不会使用它。另外,您最终会得到文件的修改后的版本控制工作副本,这可能不是您想要的。
要解决此问题
git
)。可以在Info.plist
文件中引用xcconfig文件中设置的变量。
答案 5 :(得分:0)
对我有用的是“清理” Xcode
在Mac上
打开Xcode
command+k
(清洁控制台)
command+option+k
(重新加载控制台)
command+option+shift+k
(清理构建文件夹)
退出Xcode
在终端窗口中,清理派生数据。我根据Xcode的安装位置运行以下命令。我相信它的基本位置
rm -rf ~/Library/Developer/Xcode/DerivedData
重新打开xcode,效果很好!
答案 6 :(得分:0)
很奇怪。但是对我来说,当我仅使用数字命名项目时(即“ 111”),自动预览总是会失败。使用字母命名(带或不带数字)时,一切正常。
是12.3 Beta(12C5020f),Big Sur Beta 11.1(20C5048k)。