2017-12-11 6 views
0

を送りました。 reloadDataを終了するとコードがクラッシュします(下記参照)。これは、NSOutlineViewDataSourceのnumberOfChildrenOfItem関数(2番目のパスが起こる前に私は期待していました)を通過し、 "[NSView reloadData]:インスタンスに送られた認識できないセレクタ"エラーでクラッシュします。ここでは、おそらく関連するコードは何かということです:は[NSViewのreloadData]:未認識セレクタは、私はsplitViewのマスター側に3レベルoutlineViewを作成することにより、スイフトとXcodeのビットを学習しようとしているインスタンスに

import Cocoa 

//インポートWebKitの

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はオプションで、データモデルのルートオブジェクトに対してはゼロではありません。 この場合、 はカテゴリに対してnilになります。それ以外の場合は、オブジェクトの親オブジェクト が含まれます。 categoryItemオブジェクトの場合、 アイテムはカテゴリになります。 */

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 
} 

そして、ここでエラーダンプが(私はこれの多くを作るのに十分精通していないです)です:

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

) 

任意の提案ですか?前もって感謝します。

+0

オブジェクトあなたがこのメッセージを送信するには、タイプNSViewのではなく、任意のサブクラスです。それはあなたがそれを宣言した方法とは異なるかもしれませんが、それはあなたのことと思っていますが、それはそれです。それであなたの仕事:それがなぜNSViewであるかを考えて、それがあなたの考えではないことを知りましょう。 – gnasher729

答えて

0

あなたの店舗は、おそらくアウトラインビューではないもの(おそらくそのスーパービュー)に接続されています。

あなたは、ビュー階層内のアウトラインビューをクリックしてコンセント円

  • またはCTRLの上にマウスを置くと...続きを

    • を確認することができます。

    enter image description here

  • +0

    はい、それです。どうもありがとうございました。問題はsplitView内にoutlineViewを構築することでした。私のストーリーボードには2つの「アウトラインビュー」のエントリがあり、間違ったものにアウトレットを引っ掛けました。 –

    関連する問題