O Xcode 11 falha ao copiar / colar vistas de diferentes storyboards

18

Eu tenho um problema com o Xcode 11 em execução na Catalina (ele tinha o mesmo problema com o Moave). Quando tento copiar / colar uma exibição ou um ViewController de um storyboard para outro, o Xcode falha com esta exceção:

...
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
...

Está acontecendo com outra pessoa? Isso não é suportado pelo storyboard?

LorenzOliveto
fonte
Definitivamente, esse é um bug do Xcode, então o melhor que você pode fazer é denunciá-lo no Assistente de Feedback da Apple
Alladinian
11
O mesmo aqui, posso confirmar o viewController de copiar / colar de um storyboard para outro, causando a falha do Xcode 11 (Mojave).
Szilveszter Zsigmond
O mesmo aqui, o Xcode continua travando ao copiar e colar. cmd + Dfunciona se o que você deseja é duplicar um único viewController no mesmo Storyboard, mas o que eu preciso é copiar e colar em um Storyboard diferente.
Fs_tigre 30/10/19
ATUALIZAÇÃO - Agora, ele começou a funcionar bem depois de excluir outras versões do Xcode que eu havia instalado. Talvez as outras versões estejam causando o problema, eu não sei, mas é a única coisa que fiz depois de ter problemas, agora posso copiar e colar os View Controllers entre diferentes Storyboards sem o Xcode 11 travar.
Fs_tigre 1/11/19

Respostas:

11

O problema para mim foi porque eu tinha o aplicativo em execução em segundo plano. Depois de fechar o emulador, consegui copiar / recortar e colar (mesmo em diferentes arquivos de storyboard).

Mateus Cerqueira
fonte
Isso funcionou para mim!
Bijoy Thangaraj 13/03
Isso funcionou totalmente para mim! Obrigado!!
josher932 26/03
9

Xcode-> Preferences-Locations Clique na pequena seta abaixo de "Dados Derivados" e exclua essa pasta. Depois disso, eu poderia recortar e colar entre os storyboards.

jspicer
fonte
Muito obrigado. Esta é uma solução adequada após lidar com algumas cenas do storyboard de outro projeto.
Miguel A.
esta é a única coisa que funcionou para mim no Xcode 11.3
binsnoel
ótimo trabalho perfeito ...!
Aqib Zareen 27/04
8

O mesmo problema aqui. Eu acho que é um bug com o novo Xcode 11.

Encontrei uma solução rápida. Em vez de copiar e colar os controladores de exibição que causarão o travamento do Xcode, você pode usar o cmd + D para duplicar os controladores de exibição. Mas isso só será útil se no mesmo storyboard

Antonio
fonte
11
Obrigado milhão
Petr Fiala
4

Selecione Exibir controlador, editar> copiar

Em outro storyboard, Editar> colar

tdt kien
fonte
Após isso ainda falhar o Xcode Versão 11.1 (11A1027)
Mohit G.
2

Encontrei um hack rápido, acesse o navegador do projeto e clique com o botão direito do mouse no arquivo .storyboard e escolha abrir como código-fonte.

você obterá seu storyboard no formato xml, pesquisará e copiará a classe do controlador e colará da mesma maneira que o copiou no outro storyboard. certifique-se de obter todo o código do controlador de exibição.

            <!--Detail View Controller-->
    <scene sceneID="n6l-mp-H1E"> .... </scene>
NiTrOs
fonte
Solução perfeita. Trabalhou para mim
Akash Bhardwaj
0

Dois casos possíveis:

  • você precisa copiar e colar de um projeto para outro;
  • ou dentro do mesmo projeto, mas storyboard diferente ou mesmo.

Você pode corrigi-lo fechando o emulador em execução em segundo plano e copiando e colando ou copiando e colando do seu storyboard (formato XML).

Milind Kumar
fonte
0

Descobri que, em vez de selecionar a cena, selecionar o controlador de exibição e executar uma cópia e colagem no novo storyboard funcionou.

insira a descrição da imagem aqui

yilin
fonte
0

Parece que o kernel tem problemas ao colar o storyboard inteiro, mas isso só acontece quando os aplicativos do simulador estão abertos. Feche o aplicativo simulador e tente colá-lo, ele funciona perfeitamente

Saran Jasty
fonte
0

Arrastar e soltar funcionou em vez de copiar / colar para mim. Feliz codificação!

drag_and_drop

Asil ARSLAN
fonte
0

Enfrento esse problema há muito tempo, parece que devido à nova versão do Xcode.

Aqui está a solução que funciona para mim.

Exclua Dados Derivados e reinicie o XCode.

Limpe e construa o projeto.

Verifique se o XCode não deve estar ocupado nas seguintes tarefas:

  • Projeto de construção

  • Indexação (aguarde até terminar)

  • Projeto em execução

  • Abertura do storyboard

Agora você pode tentar copiar um controlador de exibição de um storyboard para outro, se possível.

Mr.Javed Multani
fonte