Rohit Goyal Rohit Goyal - 6 months ago 24
Swift Question

Chartboost integration issues with XCode 6.1

I integrated Chartboost in Xcode 6.0 in the same project and it was working fine but as I updated my Xcode to Xcode 6.1 the bridging header file is not able to compile successfully.

I have added Chartboost framework in my project and added these required frameworks as mentioned in guide.


StoreKit

Foundation

CoreGraphics

UIKit


I added these lines in my bridging header file


import Chartboost/Chartboost.h

import Chartboost/CBNewsfeed.h

import CommonCrypto/CommonDigest.h

import AdSupport/AdSupport.h


Now when I try to build my project the Xcode gives me hell lot of swift compiler errors.

Here are the errors I am getting...


/Users/myprojectBridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:16:42: error: function definition is not allowed here
typedef NS_ENUM(NSUInteger, CBFramework) {
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:33:42: error: function definition is not allowed here
typedef NS_ENUM(NSUInteger, CBLoadError) {
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:62:43: error: function definition is not allowed here
typedef NS_ENUM(NSUInteger, CBClickError) {
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:87:9: error: unknown type name 'NSString'
typedef NSString * const CBLocation;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:135:25: error: cannot find interface declaration for 'NSObject', superclass of 'Chartboost'
@interface Chartboost : NSObject
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:153:25: error: expected a type
+ (void)startWithAppId:(NSString*)appId
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:154:25: error: expected a type
appSignature:(NSString*)appSignature
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:169:4: error: expected a type
+ (BOOL)hasInterstitial:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:198:4: error: expected a type
+ (BOOL)hasMoreApps:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:229:23: error: expected a type
+ (void)showMoreApps:(UIViewController *)viewController
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:244:4: error: expected a type
+ (BOOL)hasRewardedVideo:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:274:25: error: expected a type
+ (void)didPassAgeGate:(BOOL)pass;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:290:4: error: expected a type
+ (BOOL)handleOpenURL:(NSURL *)url
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:290:24: error: expected a type
+ (BOOL)handleOpenURL:(NSURL *)url
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:291:24: error: expected a type
sourceApplication:(NSString *)sourceApplication;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:309:4: error: expected a type
+ (BOOL)handleOpenURL:(NSURL *)url
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:309:24: error: expected a type
+ (BOOL)handleOpenURL:(NSURL *)url
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:310:24: error: expected a type
sourceApplication:(NSString *)sourceApplication
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:322:22: error: expected a type
+ (void)setCustomId:(NSString *)customId;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:333:4: error: expected a type
+ (NSString *)getCustomId;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:344:23: error: expected a type
+ (void)setFramework:(CBFramework)framework;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:358:54: error: expected a type
+ (void)setShouldRequestInterstitialsInFirstSession:(BOOL)shouldRequest;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:370:45: error: expected a type
+ (void)setShouldPauseClickForConfirmation:(BOOL)shouldPause;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:384:49: error: expected a type
+ (void)setShouldDisplayLoadingViewForMoreApps:(BOOL)shouldDisplay;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:396:40: error: expected a type
+ (void)setShouldPrefetchVideoContent:(BOOL)shouldPrefetch;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:446:26: error: expected a type
+ (void)setAutoCacheAds:(BOOL)shouldCache;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:458:4: error: expected a type
+ (BOOL)getAutoCacheAds;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:474:31: error: cannot find protocol declaration for 'NSObject'
@protocol ChartboostDelegate
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:496:4: error: expected a type
- (BOOL)shouldRequestInterstitial:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:513:4: error: expected a type
- (BOOL)shouldDisplayInterstitial:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:551:36: error: expected a type
withError:(CBLoadError)error;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:565:31: error: expected a type
withError:(CBClickError)error;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:615:4: error: expected a type
- (BOOL)shouldDisplayMoreApps:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:686:32: error: expected a type
withError:(CBLoadError)error;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:705:4: error: expected a type
- (BOOL)shouldDisplayRewardedVideo:(CBLocation)location;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:743:37: error: expected a type
withError:(CBLoadError)error;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:818:30: error: expected a type
withError:(CBLoadError)error;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:867:4: error: expected a type
- (BOOL)shouldDisplayMoreApps __attribute__((deprecated("As of version 4.5, use shouldDisplayMoreApps:(CBLocation)location")));;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:22:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/Chartboost.h:937:32: error: expected a type
- (void)didFailToLoadMoreApps:(CBLoadError)error __attribute__((deprecated("As of version 4.5, use didFailToLoadMoreApps:(CBLoadError)error forLocation:(CBLocation)location")));
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:24:25: error: cannot find interface declaration for 'NSObject', superclass of 'CBNewsfeed'
@interface CBNewsfeed : NSObject
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:53:4: error: expected a type
+ (NSArray *)getMessages;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:66:26: error: expected a type
+ (CBStory *)getMessage:(NSString *)messageId;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:78:4: error: expected a type
+ (NSUInteger)messageCount;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:89:4: error: expected a type
+ (NSUInteger)unreadMessageCount;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:113:4: error: expected a type
+ (BOOL)isNewsfeedUIVisible;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:139:4: error: expected a type
+ (BOOL)isNotificationUIVisible;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:180:23: error: expected a type
+ (void)setFetchTime:(NSUInteger)fetchTime;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:203:50: error: expected a type
+ (void)setShouldPauseStoryClickForConfirmation:(BOOL)shouldPause;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:216:25: error: expected a type
+ (void)didPassAgeGate:(BOOL)pass;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:232:31: error: cannot find protocol declaration for 'NSObject'
@protocol CBNewsfeedDelegate
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:295:28: error: expected a type
- (void)didGetNewMessages:(NSArray *)messages;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:319:36: error: expected a type
- (void)didFailToRetrieveMessages:(NSError *)error;
^
/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:9: note: in file included from /Users/bewakoofmac/Desktop/myproject/Bridging-Header.h:23:
import
^
/Users/bewakoofmac/Desktop/myproject/Chartboost.framework/Headers/CBNewsfeed.h:340:4: error: expected a type
- (BOOL)shouldAutomaticallyDisplayNotificationUI:(CBStory *)message;
^
:0: error: failed to import bridging header '/Users/bewakoofmac/Desktop/myproject/Bridging-Header.h'

Answer

EXPLANATION:

It seems like some pods and libraries don't bother importing the basic frameworks as they expect your code to already have them. This doesn't work with Swift as the way to import frameworks changed. All you need to do is to add the frameworks needed in your bridging header file.

ANSWER:

In your specific case, it is complaining about NSObject, NSString, etc... so you need to add #import <Foundation/Foundation.h> in your bridging header file.

In my case, it complained about UIView so I added UIKit.