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?
ios
xcode
macos
macos-catalina
LorenzOliveto
fonte
fonte
cmd + D
funciona se o que você deseja é duplicar um único viewController no mesmo Storyboard, mas o que eu preciso é copiar e colar em um Storyboard diferente.Respostas:
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).
fonte
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.
fonte
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
fonte
Selecione Exibir controlador, editar> copiar
Em outro storyboard, Editar> colar
fonte
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.
fonte
Dois casos possíveis:
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).
fonte
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.
fonte
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
fonte
Arrastar e soltar funcionou em vez de copiar / colar para mim. Feliz codificação!
fonte
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.
fonte