web-dev-qa-db-ja.com

NSInvalidUnarchiveOperationExceptionによるiOS11 WKWebviewのクラッシュ

ObjectiveCを使用して、1つのView Controller/Viewを持つiOS 11をターゲットとするSingleViewアプリを開発しています。ビューの上にあるMain.storyboardで、WebKitビュー(WKWebView)をドロップしました。

シミュレーターとiOS 11.0.1を実行しているiPhone 6の両方でクラッシュが発生しています:

キャッチされていない例外 'NSInvalidUnarchiveOperationException'によるアプリの終了、理由: 'WKWebViewという名前のクラスをインスタンス化できませんでした

それを機能させるために何か他のものが必要ですか?ストーリーボードから目覚めるとWKWebViewをインスタンス化できないようです。

その他の詳細:

  • Xcodeバージョン9.0 9A235
  • ストーリーボードからWKWebViewを削除すると、クラッシュはなくなります
  • App Base SDK-最新のiOS(iOS 11);展開ターゲット11.0
  • WebViewを使用して(非推奨)-UIWebView、それは動作します
  • 手動でインスタンス化しようとしませんでした

クラッシュスタック:

2017-11-06 18:38:27.765519+0200 XYZZMap[15689:1093338] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named WKWebView'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001056d01cb __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x0000000105032f41 objc_exception_throw + 48
    2   CoreFoundation                      0x0000000105744b95 +[NSException raise:format:] + 197
    3   UIKit                               0x000000010692d2c0 UINibDecoderDecodeObjectForValue + 323
    4   UIKit                               0x000000010692d5db UINibDecoderDecodeObjectForValue + 1118
    5   UIKit                               0x000000010692d172 -[UINibDecoder decodeObjectForKey:] + 89
    6   UIKit                               0x00000001062f866b -[UIView initWithCoder:] + 969
    7   UIKit                               0x000000010692d43d UINibDecoderDecodeObjectForValue + 704
    8   UIKit                               0x000000010692d172 -[UINibDecoder decodeObjectForKey:] + 89
    9   UIKit                               0x00000001066dd1a7 -[UIRuntimeConnection initWithCoder:] + 178
    10  UIKit                               0x000000010692d43d UINibDecoderDecodeObjectForValue + 704
    11  UIKit                               0x000000010692d5db UINibDecoderDecodeObjectForValue + 1118
    12  UIKit                               0x000000010692d172 -[UINibDecoder decodeObjectForKey:] + 89
    13  UIKit                               0x00000001066dc3a4 -[UINib instantiateWithOwner:options:] + 1262
    14  UIKit                               0x00000001063f8d07 -[UIViewController _loadViewFromNibNamed:bundle:] + 383
    15  UIKit                               0x00000001063f9610 -[UIViewController loadView] + 177
    16  UIKit                               0x00000001063f9941 -[UIViewController loadViewIfRequired] + 195
    17  UIKit                               0x00000001063fa19e -[UIViewController view] + 27
    18  UIKit                               0x00000001062cdd17 -[UIWindow addRootViewControllerViewIfPossible] + 122
    19  UIKit                               0x00000001062ce41f -[UIWindow _setHidden:forced:] + 294
    20  UIKit                               0x00000001062e12bf -[UIWindow makeKeyAndVisible] + 42
    21  UIKit                               0x0000000106255015 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4711
    22  UIKit                               0x000000010625a245 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1720
    23  UIKit                               0x0000000106615c6c __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 924
    24  UIKit                               0x00000001069e33ef +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
    25  UIKit                               0x0000000106615865 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249
    26  UIKit                               0x00000001066160c3 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 668
    27  UIKit                               0x0000000106f73c11 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 262
    28  UIKit                               0x0000000106f73aca -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444
    29  UIKit                               0x0000000106c61b9c __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 420
    30  UIKit                               0x0000000106e5cc3e _performActionsWithDelayForTransitionContext + 100
    31  UIKit                               0x0000000106c61998 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231
    32  UIKit                               0x00000001069e2a4c -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392
    33  UIKit                               0x0000000106258ac6 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 523
    34  UIKit                               0x0000000106821523 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 369
    35  FrontBoardServices                  0x000000010b539158 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338
    36  FrontBoardServices                  0x000000010b541c4d __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 235
    37  libdispatch.dylib                   0x00000001096b643c _dispatch_client_callout + 8
    38  libdispatch.dylib                   0x00000001096bbaf4 _dispatch_block_invoke_direct + 592
    39  FrontBoardServices                  0x000000010b56d672 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
    40  FrontBoardServices                  0x000000010b56d328 -[FBSSerialQueue _performNext] + 464
    41  FrontBoardServices                  0x000000010b56d897 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
    42  CoreFoundation                      0x00000001056732b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    43  CoreFoundation                      0x0000000105712d31 __CFRunLoopDoSource0 + 81
    44  CoreFoundation                      0x0000000105657c19 __CFRunLoopDoSources0 + 185
    45  CoreFoundation                      0x00000001056571ff __CFRunLoopRun + 1279
    46  CoreFoundation                      0x0000000105656a89 CFRunLoopRunSpecific + 409
    47  GraphicsServices                    0x000000010be609c6 GSEventRunModal + 62
    48  UIKit                               0x000000010625bd30 UIApplicationMain + 159
    49  XYZZMap                             0x00000001047274bf main + 111
    50  libdyld.dylib                       0x0000000109732d81 start + 1
    51  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

ありがとう!

50
dmind

Nib /ストーリーボードをロードする際のNSInvalidUnarchiveOperationExceptionは、nib /ストーリーボードにランタイムが理解できないオブジェクトがあることを意味します。これは、その種類のオブジェクトを定義するフレームワークが欠落しているためです。

したがって、この場合、アプリがストーリーボードからデコードされたときにWKWebViewが何であるかをアプリが理解できるように、アプリのターゲットをWebKitフレームワークにリンクする必要があります。

これが正しく構成されている場合のアプリターゲットのビルドフェーズを示すスクリーンショットは次のとおりです。

enter image description here

118
matt

[ターゲット]-> [全般]-> [リンクされたフレームワークとライブラリ]->下の[+]記号をクリック-> webKit.Frameworkを検索->追加。

39
ram880

ストーリーボードにWKWebViewインスタンスがあるかどうかを確認します。コードではUIWebViewインスタンスがある場合があります

2
abinop

私も同じような問題に直面しました。

WKWebViewをアウトレットとして宣言せずに

Without declaring as Outlet

シミュレータで実行中にこのエラーが発生しました

enter image description here

enter image description here

enter image description here

アウトレットを追加した後、それは私のためにうまくいった。


お役に立てれば :)

1
Sree Ramana