Xcode9 故事板:发生内部错误。编辑功能可能会受到限制
Xcode 9 Storyboard: an internal error occurred. editing functionality may be limited
当我在 Xcode 9 中打开我的项目时,Storyboard 和 Launchscreen 出现上述错误。
注意:清理派生数据对我没有帮助。
请看截图
当您的代码中存在编辑器无法识别或处理的编译器错误时,通常会发生这种情况。所以它崩溃了。不幸的是,解决这个问题的唯一方法是找出这段代码并修复它。
当 Swift 无法确定我的一个变量的类型时,我遇到了这个问题。
This answer 也值得一看。
我通过-
解决了这个问题
- 正在将我的 Mac 更新为 MacOS High Siera
- 已删除Xcode
- 从 AppStore
安装了新的 Xcode
我遇到了同样的问题。并通过更新命令行工具 and/or 删除 unused/older Xcode 版本解决,
转到 Xcode 首选项 > 位置,
- 将命令行工具更新到 Xcode 9.0
- 删除派生数据
- 此外,删除旧的 Xcode 版本
- 重启Mac
此错误是 Interface Builder 出现问题时的一般错误。不幸的是,错误本身并没有指出具体原因。有时是工具的错误,有时是OS的错误,有时是开发者代码的错误,有时是用户配置的错误。
常见原因包括:
- 文件的权限/所有权设置不正确。
- 正在手动删除 ~/Library/Developer.
中的文件
- 安装有问题的第 3 方 kexts(尤其是安全或防火墙软件)。
经过多次尝试,我在这里修复了它。 Xcode-select 指向 Xcode 的错误版本(此处指向 Xcode 8.3.3)。
要检查,请使用
xcode-select -p
要更改,请使用
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
问题似乎出现在使用 Xcode 9 实例而 xcode-select 指向 Xcode 8 版本时。
如果您需要再次使用 Xcode 8.x,请不要忘记切换回来。
您可以在问题报告中找到问题,只需单击报告错误并打开 log.txt 文件即可找到问题。在我的例子中,我设置了无效的 table 行高。
当时发生在我身上的时候我的配置是这样的,
OS : macOS Sierra 版本 10.12.6
Xcode : 9.0
我创建了新项目并打开了故事板,但出现了这个错误。
解决方案:我刚刚退出 xcode 并重新开始,但错误并非如此。
所以,只需要重新启动 xcode!
我也遇到过这个问题。
解决方法很简单,删除xcode的派生数据,重启xcode即可。
当您打开 2 个不同版本的 Xcode 时,通常会发生此错误。
解决方法:请同时关闭Xcode和清除驱动data.now再试一次,一次使用一个Xcode
Xcode 9.3
Empty Storyboard/ new project
macOS High Sierra 10.13.4
就我而言,当我从工作区打开故事板时会发生这种情况。
所以我摆脱了工作区和 cocoapods。然后只使用 xcode 个项目和 carthage 个第三方库。故事板打开速度更快且没有此错误。
通过命令或首选项两种方式删除派生数据。
rm -rf ~/Library/Developer/Xcode/DerivedData/
或
Xcode -> Preferences -> Location -> Derived Data
在 Xcode 菜单中转到产品清除项目。
断开连接的设备并重新启动 Xcode 和系统。
我刚刚按照以下步骤解决了 xcode 9.3.1 上出现的相同错误,
- 清理项目
- 退出 xocde
- 已从项目文件夹中删除 BUILD 文件夹
- 再次打开
只需退出(如果需要则强制退出)Xcode 并重新开始。
对我来说,退出 Xcode
然后重新打开就解决了这个问题
Xcode 9.4.1
MacOS High Seirra 10.13.4
我也遇到了这个问题,我尝试了这里提供的大多数解决方案。
最后,对我有帮助的是退出 Xcode(版本 10.1)并重新启动我的 MacBook。
我今天遇到了同样的问题
Xcode 10.1 ;退出 Xcode 并重新启动 Mac 这本书今天解决了这个问题,
我在 Xcode 10.2.1
中遇到了同样的问题
我有开放的界面生成器(故事板)作为源代码,就像通过右键单击故事板文件所附的屏幕截图一样
已完成以下步骤
- 已将版本 3.0 更新为 3.5
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0"
- 再次打开故事板作为界面生成器
它现在刷新了,我现在没有收到错误,视图也正确
然而,当我重新访问故事板的 spruce 代码时,版本又恢复到 3.0。
但这对刷新有效并解决了我的问题
仅供参考,我得到了这个答案,在日志中它说...
异常名称:NSInternalInconsistencyException
异常原因:scale must be > 0
原因原来是我一直在转换为暗模式并使用图像资源制作我的按钮等图标。原来我有一个选项卡控制器,它指向的页面还没有将图标设置为资产目录图像。
只需退出项目并再次打开 Story Board 即可使用所有设计控件。就我而言。
对于所有其他面临此问题但没有成功删除派生数据的人来说,当您尝试在元素和超级视图之间添加纵横比时似乎存在错误。因此,当您添加纵横比约束,然后将检查器中的第二个元素更改为超级视图后,约束仍在元素层次结构中,但应将其移动到视图层次结构,或者更好的是,添加纵横比约束从元素拖动到超级视图并选择等宽。
检查图像密度。更改为 72dpi 或更高。
同样的问题,Xcode版本 12.0 (12A7209)。 Xcode 9 到 12 的 Apple 没有解决故事板的任何问题。
解决方案:只是 Re-open 你的项目。
我今天在故事板中遇到了同样的问题和错误。我的一个控制器只显示黑色背景和蓝色轮廓。
我按如下方式解决了这个问题
- 创建一个新控制器
- 将视图从旧的(功能失调的)控制器复制到新的控制器
- 将视图连接到 .swift 文件中各自的出口。 (当我将视图从旧控制器复制到新控制器时,约束没有丢失)
步骤1)打开storyboard as source code如下图:
步骤 2) 您会在顶部看到这一行,将 version="3.0" 更改为 version="3.5"
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3) 步骤 3 重启 Xcode.
希望对您有所帮助。
我在使用 Xcode 12.2
时遇到了这个问题
将 UITabBarController 添加到我的故事板后一段时间,我开始收到此错误。检查 Xcode 提供的日志,我发现它与选项卡栏控制器有关,特别是因为它不支持作为拆分视图控制器的详细视图。奇怪,因为我没有使用拆分视图控制器。
=================================
ASSERTION:
=================================
Failed to update scene 'ihF-5r-7AU, uvd-WH-zGG, Tgo-fH-4sa, ExD-dD-O6v, BUC-1K-8XU, and SVS-tP-wFU' with IBLayoutConstraint (x120), IBUIViewAutolayoutGuide (x6), UIButton (x3), UIImageView (x2), UILabel (x14), UINavigationItem (x5), UITabBarItem (x2), UITableView (x3), UITableViewCell (x2), UITableViewCellContentView (x2), UIView (x15), and UIViewController (x6).
Exception name: NSInvalidArgumentException
Exception reason: UITabBarController is unsupported as viewController for -[UISplitViewController setViewController:forColumn:] in Primary column
最后,正如有人指出的那样,我检查了情节提要源代码 并找到了一些 splitViewMasterSizeMetrics
标签,我的标签栏控制器中每个标签一个标签。我删除了那些标签并且工作得很好。我什至不知道如何添加拆分视图引用,因为我从未在我的项目中使用过它
所以我的看法是:
- 检查你的日志
- 如果您仍然无法找出问题所在,请在故事板源代码中搜索与错误相关的任何事件
退出 Xcode 并在不使用 Rosetta 的情况下重新打开它,一切都会正常。
我遇到了同样的问题。非常旧的项目和 UI 构建器仅显示框并给出比例必须 > 0 错误。 UI 中有一些低于 72 dpi 的旧图形。删除那些/用 72 dpi 或更高替换它们,瞧。立即一切正常。通常是否删除派生数据并重新启动,但这是解决方法。
-> 检查小于 72 dpi 的图像并修复它们。
当我在 Xcode 9 中打开我的项目时,Storyboard 和 Launchscreen 出现上述错误。
注意:清理派生数据对我没有帮助。
请看截图
当您的代码中存在编辑器无法识别或处理的编译器错误时,通常会发生这种情况。所以它崩溃了。不幸的是,解决这个问题的唯一方法是找出这段代码并修复它。
当 Swift 无法确定我的一个变量的类型时,我遇到了这个问题。
This answer 也值得一看。
我通过-
解决了这个问题- 正在将我的 Mac 更新为 MacOS High Siera
- 已删除Xcode
- 从 AppStore 安装了新的 Xcode
我遇到了同样的问题。并通过更新命令行工具 and/or 删除 unused/older Xcode 版本解决,
转到 Xcode 首选项 > 位置,
- 将命令行工具更新到 Xcode 9.0
- 删除派生数据
- 此外,删除旧的 Xcode 版本
- 重启Mac
此错误是 Interface Builder 出现问题时的一般错误。不幸的是,错误本身并没有指出具体原因。有时是工具的错误,有时是OS的错误,有时是开发者代码的错误,有时是用户配置的错误。
常见原因包括:
- 文件的权限/所有权设置不正确。
- 正在手动删除 ~/Library/Developer. 中的文件
- 安装有问题的第 3 方 kexts(尤其是安全或防火墙软件)。
经过多次尝试,我在这里修复了它。 Xcode-select 指向 Xcode 的错误版本(此处指向 Xcode 8.3.3)。
要检查,请使用
xcode-select -p
要更改,请使用
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
问题似乎出现在使用 Xcode 9 实例而 xcode-select 指向 Xcode 8 版本时。 如果您需要再次使用 Xcode 8.x,请不要忘记切换回来。
您可以在问题报告中找到问题,只需单击报告错误并打开 log.txt 文件即可找到问题。在我的例子中,我设置了无效的 table 行高。
当时发生在我身上的时候我的配置是这样的,
OS : macOS Sierra 版本 10.12.6 Xcode : 9.0
我创建了新项目并打开了故事板,但出现了这个错误。
解决方案:我刚刚退出 xcode 并重新开始,但错误并非如此。
所以,只需要重新启动 xcode!
我也遇到过这个问题。 解决方法很简单,删除xcode的派生数据,重启xcode即可。
当您打开 2 个不同版本的 Xcode 时,通常会发生此错误。 解决方法:请同时关闭Xcode和清除驱动data.now再试一次,一次使用一个Xcode
Xcode 9.3
Empty Storyboard/ new project
macOS High Sierra 10.13.4
就我而言,当我从工作区打开故事板时会发生这种情况。
所以我摆脱了工作区和 cocoapods。然后只使用 xcode 个项目和 carthage 个第三方库。故事板打开速度更快且没有此错误。
通过命令或首选项两种方式删除派生数据。
rm -rf ~/Library/Developer/Xcode/DerivedData/
或
Xcode -> Preferences -> Location -> Derived Data
在 Xcode 菜单中转到产品清除项目。
断开连接的设备并重新启动 Xcode 和系统。
我刚刚按照以下步骤解决了 xcode 9.3.1 上出现的相同错误,
- 清理项目
- 退出 xocde
- 已从项目文件夹中删除 BUILD 文件夹
- 再次打开
只需退出(如果需要则强制退出)Xcode 并重新开始。
对我来说,退出 Xcode
然后重新打开就解决了这个问题
Xcode 9.4.1
MacOS High Seirra 10.13.4
我也遇到了这个问题,我尝试了这里提供的大多数解决方案。
最后,对我有帮助的是退出 Xcode(版本 10.1)并重新启动我的 MacBook。
我今天遇到了同样的问题
Xcode 10.1 ;退出 Xcode 并重新启动 Mac 这本书今天解决了这个问题,
我在 Xcode 10.2.1
中遇到了同样的问题我有开放的界面生成器(故事板)作为源代码,就像通过右键单击故事板文件所附的屏幕截图一样
已完成以下步骤
- 已将版本 3.0 更新为 3.5
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0"
- 再次打开故事板作为界面生成器
它现在刷新了,我现在没有收到错误,视图也正确
然而,当我重新访问故事板的 spruce 代码时,版本又恢复到 3.0。
但这对刷新有效并解决了我的问题
仅供参考,我得到了这个答案,在日志中它说...
异常名称:NSInternalInconsistencyException 异常原因:scale must be > 0
原因原来是我一直在转换为暗模式并使用图像资源制作我的按钮等图标。原来我有一个选项卡控制器,它指向的页面还没有将图标设置为资产目录图像。
只需退出项目并再次打开 Story Board 即可使用所有设计控件。就我而言。
对于所有其他面临此问题但没有成功删除派生数据的人来说,当您尝试在元素和超级视图之间添加纵横比时似乎存在错误。因此,当您添加纵横比约束,然后将检查器中的第二个元素更改为超级视图后,约束仍在元素层次结构中,但应将其移动到视图层次结构,或者更好的是,添加纵横比约束从元素拖动到超级视图并选择等宽。
检查图像密度。更改为 72dpi 或更高。
同样的问题,Xcode版本 12.0 (12A7209)。 Xcode 9 到 12 的 Apple 没有解决故事板的任何问题。
解决方案:只是 Re-open 你的项目。
我今天在故事板中遇到了同样的问题和错误。我的一个控制器只显示黑色背景和蓝色轮廓。
我按如下方式解决了这个问题
- 创建一个新控制器
- 将视图从旧的(功能失调的)控制器复制到新的控制器
- 将视图连接到 .swift 文件中各自的出口。 (当我将视图从旧控制器复制到新控制器时,约束没有丢失)
步骤1)打开storyboard as source code如下图:
步骤 2) 您会在顶部看到这一行,将 version="3.0" 更改为 version="3.5"
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3) 步骤 3 重启 Xcode.
希望对您有所帮助。
我在使用 Xcode 12.2
时遇到了这个问题将 UITabBarController 添加到我的故事板后一段时间,我开始收到此错误。检查 Xcode 提供的日志,我发现它与选项卡栏控制器有关,特别是因为它不支持作为拆分视图控制器的详细视图。奇怪,因为我没有使用拆分视图控制器。
=================================
ASSERTION:
=================================
Failed to update scene 'ihF-5r-7AU, uvd-WH-zGG, Tgo-fH-4sa, ExD-dD-O6v, BUC-1K-8XU, and SVS-tP-wFU' with IBLayoutConstraint (x120), IBUIViewAutolayoutGuide (x6), UIButton (x3), UIImageView (x2), UILabel (x14), UINavigationItem (x5), UITabBarItem (x2), UITableView (x3), UITableViewCell (x2), UITableViewCellContentView (x2), UIView (x15), and UIViewController (x6).
Exception name: NSInvalidArgumentException
Exception reason: UITabBarController is unsupported as viewController for -[UISplitViewController setViewController:forColumn:] in Primary column
最后,正如有人指出的那样,我检查了情节提要源代码 并找到了一些 splitViewMasterSizeMetrics
标签,我的标签栏控制器中每个标签一个标签。我删除了那些标签并且工作得很好。我什至不知道如何添加拆分视图引用,因为我从未在我的项目中使用过它
所以我的看法是:
- 检查你的日志
- 如果您仍然无法找出问题所在,请在故事板源代码中搜索与错误相关的任何事件
退出 Xcode 并在不使用 Rosetta 的情况下重新打开它,一切都会正常。
我遇到了同样的问题。非常旧的项目和 UI 构建器仅显示框并给出比例必须 > 0 错误。 UI 中有一些低于 72 dpi 的旧图形。删除那些/用 72 dpi 或更高替换它们,瞧。立即一切正常。通常是否删除派生数据并重新启动,但这是解决方法。
-> 检查小于 72 dpi 的图像并修复它们。