当从不同的故事板上复制/粘贴视图时,Xcode 11崩溃

时间:2019-10-09 07:35:52

标签: ios xcode macos macos-catalina

我在Catalina上运行Xcode 11时遇到了问题(Moave也有同样的问题)。 当我尝试将视图或ViewController从一个情节提要板复制/粘贴到另一个Xcode时,发生此异常崩溃:

...
Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
Sending paste: to IBStructureAreaDockView from <NSMenuItem: 0x7fe24030ddd0 Paste>
ProductBuildVersion: 11A1027
ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEInterfaceBuilder/IDEInterfaceBuilder-15400/InterfaceBuilderKit/WidgetIntegration/View/IBViewIntegration.m:2451
Details:  There should only be 1 parent of all the constraint items extracted from the pasteboard: {(
)}
Object:   <IBUIView: 0x7fe23db1c600>
Method:   -ibDidExtractObjects:fromPasteboard:intoDocument:context:
Thread:   <NSThread: 0x7fe23ac17e80>{number = 1, name = main}
Hints:   
  0: Sending paste: to IBStructureAreaDockView from <NSMenuItem: 0x7fe24030ddd0 Paste>
Backtrace:
  0   -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in IDEKit)
  1   _DVTAssertionHandler (in DVTFoundation)
  2   _DVTAssertionFailureHandler (in DVTFoundation)
  3   -[NSView(IBViewIntegration) ibDidExtractObjects:fromPasteboard:intoDocument:context:] (in IDEInterfaceBuilderKit)
  4   -[IBUIView(IBUIViewIntegration) ibDidExtractObjects:fromPasteboard:intoDocument:context:] (in IDEInterfaceBuilderCocoaTouchIntegration)
  5   -[IBDocument ibDidExtractObjects:fromPasteboard:context:] (in IDEInterfaceBuilderKit)
  6   -[IBDocument insertObjectsFromPasteboard:ofType:asChildrenOfObject:atIndex:context:finishExtractingObjectsBlock:] (in IDEInterfaceBuilderKit)
  7   -[IBDocument insertOrMoveChildrenFromPasteboard:ofType:asChildrenOfObject:atIndex:context:finishExtractingObjectsBlock:] (in IDEInterfaceBuilderKit)
  8   -[IBDocument addOrMoveChildrenFromPasteboard:ofType:toObject:context:finishExtractingObjectsBlock:] (in IDEInterfaceBuilderKit)
  9   -[IBStoryboardDocument addOrMoveChildrenFromPasteboard:ofType:toSceneGroup:context:] (in IDEInterfaceBuilderKit)
 10   -[IBSceneDockViewController performDockPasteWithPasteboard:context:] (in IDEInterfaceBuilderKit)
 11   -[IBSceneDockViewController dockViewPerformPaste:] (in IDEInterfaceBuilderKit)
 12   -[IBStructureAreaDockView paste:] (in IDEInterfaceBuilderKit)
 13   -[NSApplication(NSResponder) sendAction:to:from:] (in AppKit)
 14   __37-[DVTApplication sendAction:to:from:]_block_invoke.86 (in DVTKit)
 15   DVTInvokeWithFailureHint (in DVTFoundation)
 16   -[DVTApplication sendAction:to:from:] (in DVTKit)
 17   -[NSMenuItem _corePerformAction] (in AppKit)
 18   -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] (in AppKit)
 19   -[NSMenu performKeyEquivalent:] (in AppKit)
 20   routeKeyEquivalent (in AppKit)
 21   -[NSApplication(NSEvent) sendEvent:] (in AppKit)
 22   -[IDEApplication sendEvent:] (in IDEKit)
 23   -[NSApplication run] (in AppKit)
 24   NSApplicationMain (in AppKit)
 25   main (in Xcode)
 26   start (in libdyld.dylib)

Performing @selector(paste:) from sender NSMenuItem 0x7fe24030ddd0
abort() called

Application Specific Signatures:
[parentsOfItemsInConstraints count] == 1
...

这是别人发生的吗?故事板不支持这种功能吗?

12 个答案:

答案 0 :(得分:8)

同一问题。我认为这是新Xcode 11的错误。

找到了一种快速的解决方法。可以使用cmd + D复制视图控制器,而不是复制和粘贴会导致Xcode崩溃的视图控制器。但这仅在同一个情节提要中有用

答案 1 :(得分:2)

我发现了一个快速破解方法,请转到项目导航器,然后右键单击.storyboard文件,然后选择“打开”作为源代码。

您将以xml格式获取情节提要,搜索并复制控制器的类,然后以与复制情节提要相同的方式粘贴到另一个情节提要中。 确保获取视图控制器的完整代码。

            <!--Detail View Controller-->
    <scene sceneID="n6l-mp-H1E"> .... </scene>

答案 2 :(得分:2)

对我来说,问题是因为我的应用程序在后台运行。关闭模拟器后,我可以复制/剪切和粘贴(甚至在不同的故事板文件中)。

答案 3 :(得分:1)

选择View Controller,编辑>复制

在另一个情节提要上,编辑>粘贴

答案 4 :(得分:1)

Xcode->首选项位置 单击“派生数据”下方的小箭头,然后删除该文件夹。 完成此操作后,我可以在故事板之间剪切和粘贴。

答案 5 :(得分:1)

似乎内核在粘贴整个故事板时出现问题,但这仅在模拟器应用程序打开时才会发生。关闭模拟器应用程序,然后尝试将其粘贴完美

答案 6 :(得分:1)

我尝试清除派生数据并清理项目和项目文件夹,并多次强制重新启动Xcode,但所有这些都不起作用。

我也无法复制视图,因为我需要在其他情节提要中进行复制。

对我来说,最终的诀窍是打开一个助理编辑器并拖放需要复制的视图。

答案 7 :(得分:0)

两种可能的情况:

  • 要么您必须将一个项目复制并粘贴到另一个项目;要么
  • 或在同一项目中,但故事板不同或相同。

您可以通过关闭在后台运行的仿真器,然后进行复制和粘贴,或者通过从故事板(XML格式)进行复制和粘贴来修复此问题。

答案 8 :(得分:0)

我发现,与其选择场景,不如选择视图控制器并执行复制并粘贴到新的故事板上,就可以了。

enter image description here

答案 9 :(得分:0)

拖放对我有用,而不是复制/粘贴。编码愉快!

drag_and_drop

答案 10 :(得分:0)

我经常面对这个问题,似乎是由于新版本的Xcode。

这是最适合我的解决方案。

删除派生数据,然后重新启动XCode。

清理并构建项目。

确保XCode不忙于以下任务:

  • 建筑项目

  • 索引(等待完成)

  • 正在运行的项目

  • 故事板开口

现在,您可以尝试将一个视图控制器从一个情节提要板复制到另一个情节提要中。

答案 11 :(得分:0)

关闭模拟器!将起作用,并允许从不同的故事板上复制粘贴视图控制器。