Create and import swift framework

前端 未结 4 1916
星月不相逢
星月不相逢 2020-12-03 05:38

I\'m new in swift programming. I need to create pure swift framework and import it in my existing pure swift project. When I try to import swift framework, I\'m getting this

4条回答
  •  自闭症患者
    2020-12-03 05:54

    In Xcode 7.2 using Swift 2.1 I managed to get past the mentioned error by making sure that the build settings of your pure Swift framework called Foo are as follows:

    1) Build Settings->Packaging->Defines Module = Yes

    2) Build Settings->Swift Compiler - Code Generation->Install Objective-C Compatibility Header = Yes (if you do not need to import your Swift framework into Objective C set this setting to No)

    3) Erase the string value of Build Settings->Swift Compiler - Code Generation->Objective-C Bridging Header

    4)Build Settings->Swift Compiler - Code Generation->Objective-C Generated Interface Header Name = Foo-Swift.h (if you do not need to import your Swift framework into Objective C erase this setting as you did in step 3))

    5) Make sure that Build Settings->Packaging->Product Name = Foo

    6) Add to the public umbrella header of your framework (Foo.h), which you can use to import your Swift code to Objective C, the following line:

    #import "Foo-Swift.h"
    

    (but if you do not need to import your Swift code into objective C skip this step)

    6) Add the following line to the Swift file where you want to use the module Foo:

    import Foo
    

    Important notes:

    1) Ensure that your umbrella header Foo.h is set to public in the File Inspector, otherwise this won't work.

    2) If you are using your pure Swift framework in Objective C files, ensure that:

    • the Foo-Swift.h header has generated the correct interface by going to Foo.h and then clicking on the top left corner menu of the Xcode code editor and then choosing Includes->Foo-Swift.h (I had to rebuild the Foo framework a few times until Xcode caught-up with the change and then generated the correct interface in Objective C, so you may need to do that as well)

    • your swift classes inherit from NSObject or they won't be available to Objective C code

提交回复
热议问题