18
votes

Xcode 11 se bloque lors du copier / coller des vues de différents storyboards

J'ai un problème avec Xcode 11 fonctionnant sur Catalina (il avait le même problème avec Moave). Lorsque j'essaye de copier / coller une vue ou un ViewController d'un storyboard vers un autre Xcode se bloque avec cette exception:

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

Cela arrive-t-il à quelqu'un d'autre? N'est-ce pas quelque chose qui n'est pas pris en charge par le storyboard?


4 commentaires

Il s'agit certainement d'un bogue Xcode, donc le mieux que vous puissiez faire est de le signaler sur l'assistant de rétroaction d'Apple.


La même chose ici, je peux confirmer que le copier / coller de viewController d'un storyboard à un autre provoque le crash de Xcode 11 (Mojave).


Pareil ici, Xcode continue de planter lors de la copie et du collage. cmd + D fonctionne si vous voulez dupliquer un seul viewController dans le même Storyboard, mais ce dont j'ai besoin est de copier et coller dans un autre Storyboard.


MISE À JOUR - Maintenant, cela a commencé à fonctionner correctement après la suppression d'autres versions de Xcode que j'avais installées. Peut-être que les autres versions causaient le problème, je ne sais pas mais c'est la seule chose que j'ai faite après avoir eu des problèmes, maintenant je peux copier et coller des contrôleurs de vue entre différents storyboards sans que Xcode 11 ne plante.


12 Réponses :


2
votes

J'ai trouvé un hack rapide, allez dans le navigateur de votre projet puis faites un clic droit sur votre fichier .storyboard et choisissez Ouvrir comme code source.

vous obtiendrez votre storyboard au format xml, rechercher et copier la classe du contrôleur, et coller de la même manière que vous l'avez copié dans l'autre storyboard. assurez-vous d'obtenir le code complet du contrôleur de vue.

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


1 commentaires

Solution parfaite. A travaillé pour moi



8
votes

Même problème ici. Je pense que c'est un bug avec le nouveau Xcode 11.

Trouvé une solution de contournement rapide. Au lieu de copier et coller des contrôleurs de vue, ce qui entraînera le blocage de Xcode, vous pouvez utiliser cmd + D pour dupliquer les contrôleurs de vue. Mais cela ne sera utile que si dans le même storyboard


0 commentaires

4
votes

Sélectionnez Afficher le contrôleur, Modifier> copier

Sur un autre storyboard, Modifier> coller


1 commentaires

Suite à ce crash, la version Xcode 11.1 (11A1027)



9
votes

Xcode-> Préférences-Emplacements Cliquez sur la petite flèche sous "Données dérivées" et supprimez ce dossier. Après avoir fait cela, je pouvais couper et coller entre les storyboards.


2 commentaires

Merci beaucoup, C'est une solution adaptée après avoir copié certaines scènes du storyboard d'un autre projet.


c'est la seule chose qui a fonctionné pour moi dans Xcode 11.3



15
votes

Le problème pour moi était que l'application fonctionnait en arrière-plan. Après avoir fermé l'émulateur, j'ai pu copier / couper et coller (même dans différents fichiers de storyboard).


2 commentaires

Ouais, cela a fonctionné pour moi dans Xcode 11.3.1. Merci.


LE SIMULATEUR DE FERMETURE EST LA SOLUTION! MERCI



0
votes

Deux cas possibles:

  • soit vous devez copier et coller d'un projet à un autre;
  • ou dans le même projet, mais différent ou même storyboard.

Vous pouvez y remédier en fermant l'émulateur en arrière-plan, puis en copiant et collant ou en copiant et collant à partir de votre storyboard (format XML).


0 commentaires

0
votes

J'ai constaté qu'au lieu de sélectionner la scène, sélectionner le contrôleur de vue et effectuer un copier-coller dans un nouveau storyboard fonctionnait.

entrez la description de l'image ici


0 commentaires

1
votes

Il semble que le noyau ait des problèmes lors du collage de l'ensemble du storyboard, mais cela ne se produit que lorsque les applications du simulateur sont ouvertes. Fermez l'application du simulateur et essayez de la coller, cela fonctionne parfaitement


0 commentaires

0
votes

Le glisser-déposer a fonctionné au lieu du copier / coller pour moi. Bon codage!

glisser déposer


0 commentaires

0
votes

Je suis confronté à ce problème beaucoup de temps, il semble que cela soit dû à la nouvelle version de Xcode.

Voici la solution qui fonctionne pour moi.

Supprimez les données dérivées et redémarrez le XCode.

Nettoyez et construisez le projet.

Assurez-vous que XCode ne doit pas être occupé dans les tâches suivantes:

  • Projet de construction

  • Indexation (attendre la fin)

  • Projet en cours d'exécution

  • Ouverture du storyboard

Vous pouvez maintenant essayer de copier un contrôleur de vue d'un storyboard à un autre, cela peut être possible.


0 commentaires

1
votes

J'ai essayé d'effacer les données dérivées et de nettoyer le projet et le dossier du projet et de forcer le redémarrage de Xcode plusieurs fois, mais tout cela n'a pas fonctionné.

De plus, je ne pouvais pas dupliquer les vues car j'avais besoin de copier dans un autre storyboard.

Ce qui a finalement fonctionné pour moi a été d'ouvrir un éditeur d'assistant et de glisser / déposer les vues que j'avais besoin de copier.


0 commentaires

0
votes

FERMEZ LE SIMULATEUR! Cela fonctionnera et permettra le copier-coller des contrôleurs de vue de différents storyboards.


0 commentaires