This is my Podfile
platform :ios, 8.0
use_frameworks!
pod "ChartboostSDK"
pod "SVProgressHUD"
SVProgressHUD is being turning into a framework, but for some reason Chartboost is not.
That of course makes the import for Chartboost not working in my code.
The library ChartboostSDK is not supported for Swift directly using CocoaPods, you need to integrate it manually in the following way:
1.First, unzip the SDK package and drop the Chartboost Framework into your Xcode project. Be sure you've also linked these frameworks:
StoreKit
Foundation
CoreGraphics
UIKit
2.Then you need to add a Swift bridging header allows you to communicate with your old Objective-C classes from your Swift classes.You will need one if you plan to keep portions of your codebase in Objective-C. You can create it manually like in the following way:
Add a new file to Xcode (File > New > File), then select “Source” and click “Header File“.
Name your file “YourProjectName-Bridging-Header.h”.
Navigate to your project build settings and find the “Swift Compiler – Code Generation” section. You may find it faster to type in “Swift Compiler” into the search box to narrow down the results. Note: If you don’t have a “Swift Compiler – Code Generation” section, this means you probably don’t have any Swift classes added to your project yet. Add a Swift file, then try again.
Next to “Objective-C Bridging Header” you will need to add the name/path of your header file. If your file resides in your project’s root folder simply put the name of the header file there. Examples: “ProjectName/ProjectName-Bridging-Header.h” or simply “ProjectName-Bridging-Header.h”.
Open up your newly created bridging header and import your Objective-C classes using #import statements. Any class listed in this file will be able to be accessed from your swift classes.
You bridging header must be have inside the following lines:
#import <UIKit/UIKit.h>
#import <Chartboost/Chartboost.h>
#import <Chartboost/CBNewsfeed.h>
#import <CommonCrypto/CommonDigest.h>
#import <AdSupport/AdSupport.h>
You can read more about the next steps using Charboost in his iOS Integration help manual.
I hope this help you.
Related
I'm trying to incorporate Parse into my iOS app. After adding all the Frameworks and building the app I get several error messages none being related to the code itself.
I read somewhere that you need to add the Facebook SDK to your project and I did that but it only took away 3 of the errors. Does anybody know the proper instructions on installing the Facebook SDK to your project? Perhaps I didn't add it correctly?
Thanks.
Are you using Swift?
I had the same problem and it was because the frameworks are in Obj-C.
If that's the case, you need to add a bridge header file - here's a quick overview of how to do so: http://blog.parse.com/announcements/building-apps-with-parse-and-swift/
Here's the content of my bridge header file:
#import <Parse/Parse.h>
#import <Bolts/Bolts.h>
#import <ParseUI/ParseUI.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
I want to use both Parse & facebook SDK's with my app, I did everything and added every library from both Parse & facebook and edited my App Delegate file according to the docs, but I keep getting errors in my bridging-header file:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
#import <FacebookSDK/FacebookSDK.h>
#import <Parse/Parse.h>
Error:
'FBSDKCoreKit/FBSDKCoreKit.h' file not found
The errors are not specific to any statement, I delete one and the next gets an error. This file is called "MyApp-Bridging-Header.h"
The first thing I would try is to add the AVFoundation and CoreLocation frameworks to your target. Then delete the derived data from your project by going to window-->projects. Do this then clean and build your project.
Sidenote: Make sure when you type in "#import " the FBSDKCoreKit is autofilled in after you have typed a few letters. If the framework has been added already, it should give you the option to autofill the import. If it is not added this may not show up, and if this is the case, make sure your framework is added to your project in finder.
Hope this helps!
I have an iOS app that consists of an app, a bunch of my custom frameworks, and a bunch of third party framweorks:
App
MyFramework1
MyFramework2
AFNetworking.framework
Mantle.framework
..
I get the error "Include of non-modular header inside framework module" with the following structure:
App/AppDelegate.m
#import <MyFramework2/MyFramework2.h>
MyFramework2/MyFramework2.h
#import "MyClass.h"
MyClass.h
#import <Mantle/Mantle.h> <-- Error happens here
MyFramework2 builds by itself.
Trying to build App fails with the error "Include of non-modular header inside framework module" at the line that imports Mantle.h.
This issue goes away if I import Mantle.h in the .m file, but I can't do that because my class inherits from MTLModel, which is defined in Mantle.
This issue has been addressed here, but it isn't Swift-specific.
Suggestions there are (1) make sure all custom framework headers are public. They are. And (2) go to Build Settings under "Target" and set "Allow Non-modular Includes in Framework Modules" to YES.
Does anyone know why this is happening and how to fix it? Is setting "Allow Non-modular Includes in Framework Modules" to YES considered a good practice? Why is this an error?
Thanks.
Select the .h file in the project navigator. In the target membership area on the right there is a drop down menu next to the target. Select "public" there (probably "project" is selected right now).
I'm working on a 3rd party UIKit replacement for iOS. I have it building as a framework using a seriously helpful project from GitHub. (Not mine, but if you have interest, it's here.
I'm trying to use my library in other projects I'm writing. Like I said, it's basically a drop-in replacement for much of UIKit, so I decided to import the framework in my project's *.pch file instead of everywhere I might wish to use a button, action sheet, alert view, etc...
When I DON'T have an #import directive in a header file and declare a property of type MBMButton, the compiler gives me an error of "Unknown type name 'MBMButton'; did you mean 'UIButton'?" Oddly enough, the code will still run (even though this is an error, not a warning). Adding #class MBMButton or #import <MBMUIKit/MBMUIKit.h> resolves this compiler complaint.
When I DON'T have an #import directive in an implementation file (or its header) and call a method that exists in MBMUIButton but NOT in UIButton, I get a compiler error of "No visible #interface for 'UIButton' declares the selector...". As before, the code will actually run, since it's a valid call.
Now, I've done some digging, and I've changed my project's settings. Where I didn't have any value in the GCC_PREFIX_HEADER, I added the file name. Noting the Quick Help description by Apple, I tried both "ProjectName-Prefix.pch" and "./ProjectName-Prefix.pch". Neither seemed to resolve the problem. I eventually figured out that the Target-level settings override the Project-level settings, and that the Target-level settings already specified "ProjectName/ProjectName-Prefix.pch". So that was a dead end. (Nice to learn exactly what the relative path settings are, though!)
I'm OK with not using the *.pch file. It's only a convenience, and I can definitely use appropriate #class and #import directives. What's bugging me is not understanding the issue. How should one use the *.pch file?
The prefix header file is automatically included in every .m file in your project but not in any .h files.
Therefore, any references to classes will require the header to be included or a forward declaration:
#class MyClass;
However for #protocols you'll need the full header, a forward declaration won't work:
#protocol MyProtocol; //this won't work
#interface MyController : UIViewController <MyProtocol>
…
#end
I am trying to create and objective-c class (subclassed UIViewController) with xcode 4.4. I go to File->new and select an objective-c class template under ios/Cocoa Touch. It says that this selection will create "An Objective-C class, with implementation and header files.". But it only creates an implementation file. The implementation file has a #import for the missing header file.
I am using storyboards. I did not select "With XIB for user interface".
Am I doing something wrong? If this is a bug, any suggestions about how to get around it?
ok, I found a solution. First I deleted the header file that I saw with Finder in the project directory. Then I went into xcode and deleted the implementation file. Then I started over and re-created the objective-c class. This time the header file was created. Weird