Working with Objective-C

Learn about creating a bridging header to work between Ojbective-C and Swift.

We recommend using our native Swift library, even for Objective-C projects, but if you still need to use the Objective-C library, this document can help.

Call Objective-C from Swift

The Objective-C library can be called from Swift code, simply by adding a bridging header to your project, and importing the appropriate headers.

Bridging Header

To create a bridging header:

In your Swift project, create a new file. When prompted to select a file type, select Objective-C File.

Give this file a temporary name, such as “placeholder.m”, as you are going to remove it later.

Click “Finish”, and XCode should prompt you to create a Bridging Header (if it doesn’t, you probably already have a Bridging Header in your project). Press “Create Bridging Header” to continue, and Xcode will automatically create the new header file for you.

Delete your “placeholder.m” file from the project. You will notice a new file called <project name>-Bridging-Header.h

Add the following import statement to the new Bridging Header:

@import TealiumIOS;

Once you’ve done this, you will now be able to call the Objective-C code from Swift:

Call Swift from Objective-C

The Swift library cannot be directly called from Objective-C, since it is missing the required annotations in the code, and in many cases, modules do not inherit from NSObject, rather they use the native Swift data types.
However, by using an intermediate helper class, it is possible to call the Swift library from Objective-C.

Helper Class

In your Objective-C project, create a new Swift file. You will be prompted to add a bridging header if you don’t already have one. Accept this prompt. The new Swift file should be called something like “TealiumHelper.swift”. See below for a sample Objective-C compatible helper file.

In any files you wish to call the new helper from, ensure you import the invisible new Swift header created by Xcode. The header should be called “YourProjectName-Swift.h” (substitute your project name). The full import statement should look like this:

#import "YourProjectName-Swift.h"

The methods in the helper file should now be available to use in your Objective-C code. We recommend making the helper a singleton. Assuming you have two methods in your helper, initializing and calling the singleton might look like this: