foundation import ios objective-c swift

import Swift vs import Foundation


What is the difference between import Swift and import Foundation?

Until I read this comment by Martin R, I didn’t even know that there was an import Swift.


I couldn’t find the documentation and doing a Google search didn’t turn up much.

What I tried

Testing it out shows that import Swift does not give any compile errors, but that doesn’t really answer my question.

If I were to guess, I would say that you import Swift for Swift projects and that you import Foundation for Objective-C projects or maybe for Swift projects that use Objective-C classes (like NSString).

Testing this in the Playground:

import Foundation
import Swift
var str = "Hello, playground"
let str2: NSString = "hello"
let str3: String = "hello"

Commenting out import Swift gives no errors and str is of String type. However, commenting out import Foundation gives an “undeclared type” error for NSString.

My question revisited

I would be happy enough to abandon Foundation and just use Swift. So am I right to just import Swift all the time unless I specifically need to use one of the old Objective-C classes?

Yes, you will only need import Foundation if you want to access NSObject or one of its subclasses. Foundation is the framework that brings in that class hierarchy. However, it’s highly likely that in a project you’ll need more than just import Swift. Like Rob commented, import UIKit is also a nice option.

In case you haven’t read it already, Apple explains the Foundation framework here.