ビルドエラー: "WKWebView before iOS 11.0 (NSCoding support was broken in previous versions)"

エラー内容

xibファイルやstoryboardでビューにWKWebViewを配置してビルドすると、以下のエラーが発生する場合がある。

WKWebView before iOS 11.0 (NSCoding support was broken in previous versions)

これはXcodeのバグに起因するエラー。Xcode10以下のWKWebViewではNSCodingにバグがあり、 Interface Builderで組み込むとアプリがクラッシュしてしまうため、ビルド時にエラーになっている。

解決方法

以下のどちらかで回避する。

A) Interface Builderで対象ファイルのビルド対象をiOS 11以上にする

Xcodeでxibまたはstoryboardファイルを選択し、"Builds for"の対象をiOS 11以上に設定する。 f:id:shindo1687:20200317223228p:plain

B) コードでWKWebViewをビューに追加する

iOS 10以下をサポートする場合はこの方法しかない。 以下のようにコードでWKWebViewを追加する。

- (void)viewDidLoad {
    [super viewDidLoad];

    CGRect webViewFrame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
    WKWebViewConfiguration* wkWebViewConfiguration = [WKWebViewConfiguration new];
    WKWebView* webView = [[WKWebView alloc] initWithFrame:webViewFrame configuration:wkWebViewConfiguration];
    [self.view addSubview:webView];
}