2017-12-11 17 views
0

로 전송. reloadData를 종료 한 후 코드가 충돌합니다 (아래 참조). NSOutlineViewDataSource numberOfChildrenOfItem 함수를 통해 한 번 성공적으로 통과하고 (다른 일이 발생하기 전에 두 번째 패스가 예상 됨) "[NSView reloadData] : 인스턴스로 전송 된 인식 할 수없는 선택기] 오류로 인해 충돌합니다. 여기에 아마 관련 코드입니다 것입니다 :는 [NSView의는 reloadData] : 인식 할 수없는 선택기 나는 splitView의 마스터 측에서 세 가지 수준의 outlineView를 만들어 스위프트의 비트와 엑스 코드를 배우려고 노력하고 있어요 예를

import Cocoa 

// 수입 웹킷

class MasterViewController: NSViewController { 

@IBOutlet weak var outlineView: NSOutlineView! 

var categories = [Category]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do view setup here. 
    if let filePath = Bundle.main.path(forResource: "Subjects", ofType:   "plist"){ 
     categories = Category.categoryList(filePath) 
     print(categories) 
    } 
    self.outlineView.reloadData() 
} 

} 

//이 NSOutlineViewDataSource

/* 에 필요한 확장 기능이 아이의 수를 돌려줍니다 또는 손자. 주목할 사항 : item은 선택 사항이며 데이터 모델의 루트 개체에 대해서는 이됩니다. 이 경우, 은 Category에 대해 nil이됩니다. 그렇지 않으면 객체의 부모 인 이 포함됩니다. categoryItem 객체의 경우 항목이 범주가됩니다.

[<ProbleMatic.Category: 0x600000048190>, <ProbleMatic.Category: 0x604000049630>, <ProbleMatic.Category: 0x60400004e100>] 

2017-12-11 11:16:30.361189-0700 ProbleMatic[11382:4324228] -[NSView reloadData]: unrecognized selector sent to instance 0x60000a0 

2017-12-11 11:16:30.361701-0700 ProbleMatic[11382:4324228] [General] -[NSView reloadData]: unrecognized selector sent to instance 0x60000a0 

2017-12-11 11:16:30.365690-0700 ProbleMatic[11382:4324228] [General] (

    0 CoreFoundation      0x00007fff390b300b 
__exceptionPreprocess + 171 

    1 libobjc.A.dylib      0x00007fff5fc91c76 
objc_exception_throw + 48 

    2 CoreFoundation      0x00007fff3914bcd4 
-[NSObject(NSObject) doesNotRecognizeSelector:] + 132 

    3 CoreFoundation      0x00007fff390293f0 
___forwarding___ + 1456 

    4 CoreFoundation      0x00007fff39028db8 
_CF_forwarding_prep_0 + 120 

    5 ProbleMatic       0x0000000100001cbc 
_T011ProbleMatic20MasterViewControllerC11viewDidLoadyyF + 1148 

    6 ProbleMatic       0x0000000100001e44 
_T011ProbleMatic20MasterViewControllerC11viewDidLoadyyFTo + 36 

    7 AppKit        0x00007fff3665b632 
-[NSViewController _sendViewDidLoad] + 97 

    8 AppKit        0x00007fff36bffd99 
_noteLoadCompletionForObject + 641 

    9 AppKit        0x00007fff365dfe21 
-[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 2042 

    10 AppKit        0x00007fff366db13a 
-[NSNib _instantiateNibWithExternalNameTable:options:] + 679 

    11 AppKit        0x00007fff366dad96 
-[NSNib _instantiateWithOwner:options:topLevelObjects:] + 136 

    12 AppKit        0x00007fff366da06c 
-[NSViewController loadView] + 343 

    13 AppKit        0x00007fff36651f32 
-[NSViewController _loadViewIfRequired] + 75 

    14 AppKit        0x00007fff36651e9d 
-[NSViewController view] + 30 

    15 AppKit        0x00007fff3666c96b 
-[_NSSplitViewItemViewWrapper wrapView] + 94 

    16 AppKit        0x00007fff3666319e 
-[NSSplitViewController _setupSplitView] + 593 

    17 AppKit        0x00007fff36662d15 
-[NSSplitViewController viewDidLoad] + 155 

    18 AppKit        0x00007fff3665b632 
-[NSViewController _sendViewDidLoad] + 97 

    19 AppKit        0x00007fff3665206d 
-[NSViewController _loadViewIfRequired] + 390 

    20 AppKit        0x00007fff36651e9d 
-[NSViewController view] + 30 

    21 AppKit        0x00007fff36aa4cc7 
__67-[NSStoryboardEmbedSegueTemplate newDefaultPerformHandlerForSegue:]_block_invoke + 171 

    22 AppKit        0x00007fff36652015 
-[NSViewController _loadViewIfRequired] + 302 

    23 AppKit        0x00007fff36651e9d 
-[NSViewController view] + 30 

    24 AppKit        0x00007fff36eeaa23 
+[NSWindow windowWithContentViewController:] + 41 

    25 AppKit        0x00007fff3714c44d 
+[NSWindowController windowControllerWithContentViewController:] + 41 

    26 AppKit        0x00007fff36aa4888 
__66-[NSStoryboardShowSegueTemplate newDefaultPerformHandlerForSegue:]_block_invoke + 172 

    27 AppKit        0x00007fff36aa4602 
-[NSStoryboardShowSegueTemplate _perform:] + 275 

    28 AppKit        0x00007fff36da775a 
-[NSApplication(NSResponder) sendAction:to:from:] + 312 

    29 AppKit        0x00007fff3684d933 
-[NSControl sendAction:to:] + 86 

    30 AppKit        0x00007fff3684d85b 
__26-[NSCell _sendActionFrom:]_block_invoke + 136 

    31 AppKit        0x00007fff3684d761 
-[NSCell _sendActionFrom:] + 183 

    32 AppKit        0x00007fff3688ea18 
-[NSButtonCell _sendActionFrom:] + 97 

    33 AppKit        0x00007fff3684bfca 
-[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2438 

    34 AppKit        0x00007fff3688e75f 
-[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 777 

    35 AppKit        0x00007fff3684aa64 
-[NSControl mouseDown:] + 965 

    36 AppKit        0x00007fff36f46959 
-[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 5891 

    37 AppKit        0x00007fff36f435b0 
-[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 2359 

    38 AppKit        0x00007fff36f4285c 
-[NSWindow(NSEventRouting) sendEvent:] + 497 

    39 AppKit        0x00007fff36da3617 
-[NSApplication(NSEvent) sendEvent:] + 307 

    40 AppKit        0x00007fff36604d9d 
-[NSApplication run] + 812 

    41 AppKit        0x00007fff365d3f1a 
NSApplicationMain + 804 

    42 ProbleMatic       0x000000010000f50d 
main + 13 

    43 libdyld.dylib      0x00007fff60881115 
start + 1 

    44 ???         0x0000000000000003 
0x0 + 3 

) 

어떤 제안 : 여기에 */

extension MasterViewController: NSOutlineViewDataSource { 
func outlineView(_ outlineView: NSOutlineView, 
       numberOfChildrenOfItem item: Any?) -> Int { 

    if let category = item as? Category { 

     return category.children.count 
    }else if let categoryItem = item as? CategoryItem { 

     return categoryItem.grandchildren.count 
    } 

    return categories.count 
} 

그리고 오류 덤프 (내가 충분히 지식이 아니에요이 대부분을 할)입니까? 미리 감사드립니다.

+0

개체 당신이이 메시지를 전송하는 유형 NSView의가 아닌 서브 클래스이다. 그것은 당신이 선언 한 방식이나 생각하는 방식과 다를 수 있습니다. 그래서 당신의 임무는 NSView가 아니라 왜 당신이 생각하는 것이 아닌지 알아보십시오. – gnasher729

답변

0

아마 콘센트가 아웃 라인보기가 아닌 것으로 연결되어있을 가능성이 큽니다 (대부분 슈퍼 뷰일 가능성이 높습니다). 뷰 계층의 개요보기를 클릭 출구 원

  • 또는 Ctrl 키를 위에 마우스를 올리면

    당신은에 의해 확인할 수 있습니다

    ...

    • .

    enter image description here

  • +0

    예, 그게 전부입니다. 고맙습니다. 문제는 splitView 내부에 outlineView를 작성하는 것입니다. 내 스토리 보드에는 2 개의 "개요보기"항목이 표시되며 잘못된 항목에 연결되는 콘센트가 있습니다. –