Mam problem z Xcode 11 działającym na Catalinie (miał taki sam problem z Moave). Kiedy próbuję skopiować / wkleić widok lub ViewController z jednej scenorysu do innej Xcode ulega awarii z tym wyjątkiem:
...
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
...
Czy dzieje się to z kimś innym? Czy to coś nie jest obsługiwane przez scenorys?
ios
xcode
macos
macos-catalina
LorenzOliveto
źródło
źródło
cmd + D
działa, jeśli chcesz zduplikować pojedynczy kontroler widoku w tej samej serii ujęć, ale potrzebuję skopiować i wkleić do innej serii ujęć.Odpowiedzi:
Problemem było to, że aplikacja działała w tle. Po zamknięciu emulatora byłem w stanie skopiować / wyciąć i wkleić (nawet w różnych plikach scenorysu).
źródło
Xcode-> Preferencje-Lokalizacje Kliknij małą strzałkę pod „Pochodnymi danymi” i usuń ten folder. Po tym mogłem wycinać i wklejać między scenorysami.
źródło
Ten sam problem tutaj. Myślę, że to błąd w nowym Xcode 11.
Znaleziono szybkie obejście. Zamiast kopiować i wklejać kontrolery widoku, które spowodują awarię Xcode, możesz użyć cmd + D, aby powielić kontrolery widoku. Ale będzie to przydatne tylko wtedy, gdy w tej samej serii ujęć
źródło
Wybierz View Controller, Edit> copy
Na innej serii ujęć wybierz Edycja> wklej
źródło
znalazłem szybki hack, przejdź do nawigatora projektu, a następnie kliknij prawym przyciskiem myszy plik .storyboard i wybierz otwórz jako kod źródłowy.
otrzymasz storyboard w formacie xml, przeszukasz i skopiujesz klasę kontrolera, i wkleisz w ten sam sposób, w jaki skopiowałeś go w innym scenariuszu. upewnij się, że otrzymałeś cały kod kontrolera widoku.
źródło
Dwa możliwe przypadki:
Możesz to naprawić, zamykając emulator działający w tle, a następnie kopiując i wklejając lub kopiując i wklejając ze swojego scenorysu (format XML).
źródło
Przekonałem się, że zamiast wybierać scenę, wybrałem kontroler widoku i wykonałem kopiowanie i wklejanie do nowej scenorysu.
źródło
Wygląda na to, że jądro ma problemy z wklejeniem całej scenorysu, ale dzieje się tak tylko wtedy, gdy aplikacje symulatora są otwarte. Zamknij aplikację symulatora i spróbuj ją wkleić, działa idealnie
źródło
Przeciągnij i upuść działa zamiast kopiowania / wklejania dla mnie. Miłego kodowania!
źródło
Wiele razy mam do czynienia z tym problemem, wydaje się, że wynika to z nowej wersji Xcode.
Oto rozwiązanie, które działa dla mnie.
Usuń dane pochodne i zrestartuj XCode.
Oczyść i zbuduj projekt.
Upewnij się, że XCode nie powinien być zajęty w następujących zadaniach:
Projekt budowlany
Indeksowanie (poczekaj do końca)
Uruchamianie projektu
Otwarcie scenorysu
Teraz możesz spróbować skopiować jeden kontroler widoku z jednej scenorysu do drugiej, może to być możliwe.
źródło