[ios] 다른 스토리 보드에서 뷰를 복사 / 붙여 넣기하면 Xcode 11이 충돌합니다
Catalina에서 Xcode 11을 실행하는 데 문제가 있습니다 (Moave와 동일한 문제가 있습니다). 한 스토리 보드에서 다른 Xcode로 뷰 또는 ViewController를 복사 / 붙여 넣으려고하면이 예외가 발생하여 충돌합니다.
...
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
...
다른 사람에게 일어나고 있습니까? 스토리 보드에서 지원되지 않는 것입니까?
답변
문제는 백그라운드에서 앱을 실행했기 때문입니다. 에뮬레이터를 닫은 후 (다른 스토리 보드 파일에서도) 복사 / 잘라 내기 및 붙여 넣기를 수행 할 수있었습니다.
답변
Xcode-> 기본 설정-위치 “파생 데이터”아래에있는 작은 화살표를 클릭하고 해당 폴더를 삭제하십시오. 이 작업을 마친 후 스토리 보드를 잘라 붙여 넣을 수있었습니다.
답변
여기서도 같은 문제입니다. 새로운 Xcode 11의 버그라고 생각합니다.
빠른 해결 방법을 찾았습니다. Xcode가 충돌하는 뷰 컨트롤러를 복사하여 붙여 넣는 대신 cmd + D를 사용하여 뷰 컨트롤러를 복제 할 수 있습니다. 그러나 이것은 동일한 스토리 보드에있는 경우에만 유용합니다
답변
View Controller, Edit> copy를 선택하십시오.
다른 스토리 보드에서 편집> 붙여 넣기
답변
빠른 해킹을 발견하고 프로젝트 탐색기로 이동 한 다음 .storyboard 파일을 마우스 오른쪽 버튼으로 클릭하고 소스 코드로 열기를 선택하십시오.
스토리 보드를 xml 형식으로 가져 와서 컨트롤러 클래스를 검색 및 복사하고 다른 스토리 보드에 복사 한 것과 같은 방식으로 붙여 넣습니다. 뷰 컨트롤러의 전체 코드를 가져와야합니다.
<!--Detail View Controller-->
<scene sceneID="n6l-mp-H1E"> .... </scene>