import Swift vs import Foundation

31,814

Solution 1

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.

Solution 2

If you want to work with Strings, Dates, etc you need to import Foundation.

The Foundation framework provides a base layer of functionality for apps and frameworks, including data storage and persistence, text processing, date and time calculations, sorting and filtering, and networking.

If you want to work with UITableViewController, UIAlertController you need to import UIKit.

If you import UIKit you do not need to import Foundation because it already imports it in the backstage.

The Swift standard library defines a base layer of functionality for writing Swift programs, including:

Fundamental data types, Common data structures, Global functions such as print(:separator:terminator:) and abs(:), Protocols, such as Collection and Equatable... etc

If you import Foundation, then no need to import Swift again as Foundation contains references to Swift Standard Library by default.

When you are writing something not for iOS Apps, like say a server programming based on Vapor , you may need to consider import Swift.

Refer:- https://developer.apple.com/documentation/swift/swift_standard_library/

Pleases refer:- https://hasancan.tech.blog/2018/01/17/import-foundation-vs-uikit/

Solution 3

import Foundation used for access NSObject or one of its sub class.NSObject means we can extend our class using objective C runtime features.But import UIKit or import swift, that is automatically generate while we create our xcode project

Share:
31,814

Related videos on Youtube

Suragch
Author by

Suragch

Read my story here: Programming was my god

Updated on June 18, 2020

Comments

  • Suragch
    Suragch almost 4 years

    Question

    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.

    Reading

    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?

    • Rob
      Rob over 8 years
      Just use whatever your code requires. Like Martin said in his comment that you linked to, you can use the narrowest possible class for what you're doing in your code. So if import UIKit if you are using UIKit classes. Use import Foundation if using foundation classes but not UIKit. Use import Swift If you don't need any UIKit or foundation classes.
    • Kametrixom
      Kametrixom over 8 years
      I think import Swift is always implicitly there, no need to type it out.
    • mfaani
      mfaani over 5 years
      @Rob Use import Swift If you don't need any UIKit or foundation classes In playground or even in a normal file in a project if it's pure swift it just works without import Swift. So I'm wondering where it's actually needed...
  • Benjohn
    Benjohn over 5 years
    I've noticed that many of my ".swift" files build with no import Swift line, or any other import line, and yet they make use of Array and Dictionary etc. Would you have insight in to why this would be? I've asked a question about it. Thanks!
  • arango_86
    arango_86 almost 5 years
    Updated the answer with new comments based on my research.