2016-11-07 8 views
0

私はこのコードを使用してのNSViewの背景色を設定しようとしています:@IBOutletが接続されている値がnilクラッシュプログラムと等しくない「オプションの値をアンラップしながら、予想外にnilを見つけ」と

@IBOutlet weak var DrawingView: NSView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    DrawingView.wantsLayer = true 
} 
override func awakeFromNib() { 
    super.awakeFromNib() 
    DrawingView.layer?.backgroundColor = NSColor.white.cgColor//crashes here 
} 

が、いつでもDrawingView.layerが呼び出され、プログラムがクラッシュする:

"unexpectedly found nil when unwrapping an optional value" 

printステートメントでさえ、コンソールを使用してDrawingView.layerを印刷すると、それが戻ってきます。

(CALayer?) $R2 = 0x0000608000049930 { 
    ObjectiveC.NSObject = {} 
} 

ので、我々は層がnilではない、と私は私もViewWillAppear()代わりのawakeFromNib()を使用してみましたが、結果は両方の方法と同じであるプログラム

を再開したときに、まだエラーが発生したことを知っている必要があります。

私はこのことを何の問題もなく何千回もしたことを誓っていますが、この奇妙なエラーの原因となるものはありますか?

スタックトレース:

0 libswiftCore.dylib     0x00000001002f3cc0 swift_reportError + 132 
1 libswiftCore.dylib     0x0000000100311070 _swift_stdlib_reportFatalError + 61 
2 libswiftCore.dylib     0x00000001001070a0 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 355 
3 libswiftCore.dylib     0xpartial apply for (_fatalErrorMessage(StaticString, StaticString, StaticString, UInt, flags : UInt32) -> Never).(closure #2) + 109 
4 libswiftCore.dylib     0x00000001001070a0 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 355 
5 libswiftCore.dylib     0x000000010023b3d0 specialized _fatalErrorMessage(StaticString, StaticString, StaticString, UInt, flags : UInt32) -> Never + 96 
6 ReeperG levelmaker     0x0000000100001e00 ViewController.awakeFromNib() ->() + 177 
7 ReeperG levelmaker     0x0000000100002050 @objc ViewController.awakeFromNib() ->() + 34 
8 CoreFoundation      0x00007fffcc7012e0 -[NSSet makeObjectsPerformSelector:] + 217 
9 AppKit        0x00007fffca353771 -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1442 
10 AppKit        0x00007fffca45bd46 -[NSNib _instantiateNibWithExternalNameTable:options:] + 696 
11 AppKit        0x00007fffca45bba3 -[NSNib _instantiateWithOwner:options:topLevelObjects:] + 143 
12 AppKit        0x00007fffcab1069b -[NSStoryboard instantiateControllerWithIdentifier:] + 234 
13 AppKit        0x00007fffca812d46 -[NSStoryboardSegueTemplate _perform:] + 70 
14 AppKit        0x00007fffca3cbaf3 -[NSViewController _loadViewIfRequired] + 300 
15 AppKit        0x00007fffca3cba8b -[NSViewController view] + 30 
16 AppKit        0x00007fffca563760 -[NSWindow _contentViewControllerChanged] + 109 
17 Foundation       0x00007fffce129bb8 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 329 
18 AppKit        0x00007fffca5ab2a0 -[NSWindow setValue:forKey:] + 112 
19 AppKit        0x00007fffca5aafb6 -[NSIBUserDefinedRuntimeAttributesConnector establishConnection] + 694 
20 AppKit        0x00007fffca353771 -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1284 
21 AppKit        0x00007fffca45bd46 -[NSNib _instantiateNibWithExternalNameTable:options:] + 696 
22 AppKit        0x00007fffca45bba3 -[NSNib _instantiateWithOwner:options:topLevelObjects:] + 143 
23 AppKit        0x00007fffcab1069b -[NSStoryboard instantiateControllerWithIdentifier:] + 234 
24 AppKit        0x00007fffca344cd8 NSApplicationMain + 780 
25 ReeperG levelmaker     0x0000000100003860 main + 84 
26 libdyld.dylib      0x00007fffe17c9254 start + 1 

プログラムの名前がReeperGのlevelmaker

+1

ビューを右クリックして、接続が1つだけあることを確認してください。 –

+0

ビューとviewControllerを確認しましたが、接続が1つしかありません。 – C1FR1

+0

クラッシュのスタックトレースは何を示していますか? – rmaddy

答えて

0

まずで、あなたもDrawingViewという名前のクラスがあり、そして第二に、二度と財産開始に名前を付けていないことを確認してください大文字で

+0

私はDrawingViewという名前のクラスを持っていません。なぜ大文字でプロパティを開始しないのですか? – C1FR1

+1

規約と公式ガイドラインに違反しているので、https://swift.org/documentation/api-design-guidelines/ – PeejWeej

関連する問題