我正在使用在線可用的watchOS2Sampler項目並嘗試將「Picker」添加到「Gradation」場景中,目前底部有兩個按鈕,中間有一個圖像。我的目標是嘗試使用數碼錶冠控制圖像的位置。「此類不是關鍵值編碼兼容的關鍵」錯誤縮短Apple Watch Extension上的UI元素時
如果我將Picker按原樣添加到場景的頂部,我可以運行該程序,但創建了一個滾動條,因此Digital Crown現在控制該滾動而不是控制選取器。
爲了儘量減少現場的整體高度,我試圖減小拾取器的垂直尺寸。問題是,每當我這樣做是我,只要我提出的那一幕出現以下錯誤:
2015-11-05 14:07:32.458 watchOS2Sampler WatchKit Extension[11830:2672085] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<GradationInterfaceController 0x7c30a160> valueForUndefinedKey:]: this class is not key value coding-compliant for the key (null).'
減小圖像的大小,或在屏幕底部的兩個按鈕也會導致這個錯誤發生。
有趣的是,增加這些元素的垂直尺寸不會導致崩潰,儘管我仍然有相同的滾動按鈕問題。
我看到一些人報告類似的錯誤,當XIB文件不同步,但我不明白如何改變一個元素的大小會導致事情不同步,特別是當它只是在一個方向。
在模擬器和設備上都會發生此問題,並且執行全面清理並不會有幫助。
以下是完整的堆棧跟蹤的情況下,這會有所幫助:
*** First throw call stack:
(
0 CoreFoundation 0x00e17af4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x0087ddf4 objc_exception_throw + 50
2 CoreFoundation 0x00e17711 -[NSException raise] + 17
3 Foundation 0x004bee86 -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 282
4 Foundation 0x00400060 _NSGetUsingKeyValueGetter + 105
5 Foundation 0x003fffef -[NSObject(NSKeyValueCoding) valueForKey:] + 288
6 WatchKit 0x001efe99 __48-[SPRemoteInterface handlePlist:fromIdentifier:]_block_invoke927 + 49
7 libdispatch.dylib 0x046db7b7 _dispatch_call_block_and_release + 15
8 libdispatch.dylib 0x046f940d _dispatch_client_callout + 14
9 libdispatch.dylib 0x046e205a _dispatch_main_queue_callback_4CF + 689
10 CoreFoundation 0x00d69bee __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
11 CoreFoundation 0x00d27964 __CFRunLoopRun + 2356
12 CoreFoundation 0x00d26d76 CFRunLoopRunSpecific + 470
13 CoreFoundation 0x00d26b8b CFRunLoopRunInMode + 123
14 Foundation 0x0043c601 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
15 Foundation 0x004e29cd -[NSRunLoop(NSRunLoop) run] + 82
16 libxpc.dylib 0x049de0b7 _xpc_objc_main + 486
17 libxpc.dylib 0x049e0e16 xpc_main + 215
18 Foundation 0x0060bc45 service_connection_handler + 0
19 PlugInKit 0x03c251f4 -[PKService run] + 582
20 WatchKit 0x00213f71 main + 146
21 libdyld.dylib 0x0471dae1 start + 1
22 ??? 0x00000001 0x0 + 1
更新:選擇器組件肯定,似乎這裏是原因,因爲除去,使崩潰消失,然後我可以調整但我想要的其餘元素。然而,沒有任何東西與拾取器組件連接(連接的東西也沒有幫助),所以我不知道爲什麼這個元素會導致崩潰。