Swift: Cannot use library from Pod file
Solution 1
You have to import the Pod header files using Objective-C and not Swift. So you'll be mixing the two languages if you want to use CocoaPods with Swift. Here's a great tutorial on how to accomplish this.
Solution 2
In addition to Quark's answer, The Typhoon Swift example shows how to set up Typhoon for usage with Swift and CocoaPods.
Note that if you're using "application-style" tests, which is the default almost everywhere now, then the test target will already implicitly have the main target's dependencies. Therefore the test target should be declared exclusive. Example:
platform :ios, '7.0'
target :PocketForecast, :exclusive => true do
pod 'Typhoon', :head
pod 'CKUITools'
pod 'ICLoader'
pod 'NGAParallaxMotion'
pod 'NSURL+QueryDictionary'
pod 'OCLogTemplate'
pod 'PaperFold', :git => 'https://github.com/jasperblues/PaperFold-for-iOS.git', :tag => '1.2-no-gesture-recognizers'
end
target :PocketForecastTests do
pod 'Expecta', '~> 0.2.1'
pod 'OCHamcrest'
pod 'OCMockito'
end
inhibit_all_warnings!
If the test target is not declared exclusive, then it will have all of the application's libraries linked twice. This can cause problems in Typhoon's case, as it uses a lot of introspection.
Also note in the sample application, that there is a bridging header, that includes:
#import "Typhoon.h"
Typhoon Swift Example:
Solution 3
I think this needs an update. I have started recently developping Swift applications and, coming from a Java background, searched for a framework like Spring. The best I found is Typhoon. I didn't find a good introduction for newbies however, so I made a scratch project to try it out.
I integrated Typhoon by:
- Installing cocoapods
- Creating a basic podfile with a "use_frameworks!" line like here
- pod install
- Adding the "TyphoonInitialAssemblies" array to my plist file
- Create a first assembly and add it to the array in the plist
In the assembly,
import Typhoon
public class MyAssembly:TyphoonAssembly{}
Works like a charm!
Solution 4
You have even met this error.
I fixed by way: => remove "platform :ios, 'x.0'"
use_frameworks! target 'LateManagement' do pod 'Alamofire' pod 'SwiftyJSON' end
hqt
Those who don't speak math are doomed to speak nonsense. My brief profile: https://github.com/hqt/profile
Updated on July 09, 2022Comments
-
hqt almost 2 years
I'm using Typhoon library for Dependency Injection Framework. I use
CocoaPod
for installing this library. Here is my pod file:target "typhoon-swift-demo" do pod 'Typhoon' end target "typhoon-swift-demoTests" do end
I have installed successfully but when I open workspace project file. I type those line of code as Typhoon sample code:
public class ApplicationAssembly: TyphoonAssembly { }
I meet error that my application doesn't recognize
TyphoonAssembly
I have tried to use some lines such as:import Typhoon // not recogize typhoon import TyphoonAssembly // not regconize
Please tell me how to fix this problem. What should I add before I can use library. Thanks :)
-
hqt over 9 yearsthanks :) I have read project's pod file, but I don't understand why author writes that. Now I can understand clearly :D Your library + demo are great, not only for this framework library but also for whom try to learn ios programming :)
-
hqt over 9 yearsNice :D thanks so much :D it costs me amount of time :D just because I want to jump directly into swift before learning anything basic :D
-
Jasper Blues over 9 years:) Would you be so kind as to add a comment to the Podfile explaining the above, and send a pull request? Seems like we should have included that explanation.
-
jonypz over 8 yearsThat one didn't work for me. This one was better blog.ios-developers.io/parse-backend-with-swift