How to call C from Swift?
Yes, you can of course interact with Apple's C libraries. Here is explained how.
Basically, the C types, C pointers, etc., are translated into Swift objects, for example a C int
in Swift is a CInt
.
I've built a tiny example, for another question, which can be used as a little explanation, on how to bridge between C and Swift:
main.swift
import Foundationvar output: CInt = 0getInput(&output)println(output)
UserInput.c
#include <stdio.h>void getInput(int *output) { scanf("%i", output);}
cliinput-Bridging-Header.h
void getInput(int *output);
Here is the original answer.
The compiler converts C API to Swift just like it does for Objective-C.
import Cocoalet frame = CGRect(x: 10, y: 10, width: 100, height: 100)import Darwinfor _ in 1..10 { println(rand() % 100)}
See Interacting with Objective-C APIs in the docs.
Just in case you're as new to XCode as me and want to try the snippets posted in Leandro's answer:
- File->New->Project
- choose Command Line Tool as a project preset and name the project "cliinput"
- right-click in the project navigator (the blue panel on the left) and choose "New File..."
- In the drop down dialog name the file "UserInput". Uncheck the box "Also create a header file". Once you click "Next" you will be asked if XCode should create the Bridging-Header.h file for you. Choose "Yes".
- Copy & paste the code from Leandro's answer above. Once you click on the play button it should compile and run in the terminal, which in xcode is built-in in the bottom panel. If you enter a number in the terminal, a number will be returned.