Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Umbrella Header for Module Bolts does not include header 'BFAppLinkResolving.h'

I'm running an xcode 6.3 project with Parse 1.7.1 (newest version), Swift. I'm getting this issue being raised on my builds. My autocomplete and typing is PAINFULLY slow and I think it maybe related. I've testing out projects and it only happens when the Bolts module is in the project (which is required for Parse).

like image 233
kevin Avatar asked Apr 15 '15 18:04

kevin


People also ask

What is an umbrella header?

The umbrella header is the 'master' header file for a framework. Its use is that you can write #import <UIKit/UIKit.h> instead of #import <UIKit/UIViewController.h> #import <UIKit/UILabel.h> #import <UIKit/UIButton.h> #import <UIKit/UIDatePicker.h>

What is module Modulemap?

Modulemap exposes C header files for external binaries. It is a bridge between module and headers. Modulemap helps to convert #include, #import -> @import because it has a mapping between module name and headers inside. Also modulemap helps to create standalone additional modules and submodules.


2 Answers

@franciscodlp - We also need to add another header file (BFWebViewAppLinkResolver.h) - I had to make 2 of them explicit. Below is how the module.modulemap should look like.

framework module Bolts {
  umbrella header "Bolts.h"

  export *
  module * { export * }

  explicit module BFAppLinkResolving {
    header "BFAppLinkResolving.h"
    link "BFAppLinkResolving"
    export *
  }
  explicit module BFWebViewAppLinkResolver {
      header "BFWebViewAppLinkResolver.h"
      link "BFAWebViewAppLinkResolver"
      export *
  }
}
like image 200
Abhay Avatar answered Nov 22 '22 22:11

Abhay


As @MaddTheSane pointed, the Bolts framework is missing the modulemap in the last update of Parse (1.7.1).

In the Bolts.Framework create Modules/ (if it does not exist) and inside it create a file module.modulemap with the content shown below. I will suggest removing the current Bolts framework from your project and importing again (the modified one.)

enter image description here

framework module Bolts {
umbrella header "Bolts.h"

export *
module * { export * }


explicit module BFAppLinkResolving {
    header "BFAppLinkResolving.h"
    link "BFAppLinkResolving"
    export *
}}
like image 25
franciscodlp Avatar answered Nov 22 '22 23:11

franciscodlp