导入Swift vs import Foundation

时间:2015-11-26 16:39:43

标签: ios objective-c swift import foundation

问题

import Swiftimport Foundation之间的区别是什么?

在我this comment之前阅读Martin R之前,我甚至不知道有import Swift

我找不到文档,谷歌搜索没有发现太多。

我尝试了什么

测试显示import Swift没有给出任何编译错误,但这并没有真正回答我的问题。

如果我猜测,我会说您为Swift项目导入Swift,并为Objective-C项目导入Foundation,或者为使用Objective-C类的Swift项目导入(如NSString)。< / p>

在Playground中测试:

import Foundation
import Swift

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

评论import Swift没有错误,str属于String类型。但是,注释import Foundation会为NSString提供“未声明的类型”错误。

重新审视我的问题

我很高兴放弃基金会并且只使用Swift。所以我一直只能导入Swift,除非我特别需要使用旧的Objective-C类之一吗?

3 个答案:

答案 0 :(得分:22)

是的,如果您想访问NSObject或其子类,则只需要import Foundation。 Foundation是引入该类层次结构的框架。但是,在项目中,您需要的不仅仅是import Swift。就像Rob评论的那样,import UIKit也是一个不错的选择。

如果您尚未阅读,Apple会解释基金会框架here

答案 1 :(得分:1)

如果要使用字符串,日期等,则需要导入Foundation。

Foundation框架为应用程序和框架提供了基础层功能,包括数据存储和持久性,文本处理,日期和时间计算,排序和过滤以及联网。

如果要使用UITableViewController,UIAlertController,则需要导入UIKit。

如果导入UIKit,则不需要导入Foundation,因为它已经在后台导入了。

Swift标准库定义了用于编写Swift程序的功能的基本层,包括:

基本数据类型,通用数据结构,诸如print(:separator:terminator :)和abs( :)之类的全局函数,诸如Collection和Equatable之类的协议...等

如果您导入Foundation,则无需再次导入Swift,因为Foundation默认包含对Swift标准库的引用。

在编写非iOS应用程序的内容时,例如基于Vapor的服务器编程,您可能需要考虑导入Swift。

参考:- https://developer.apple.com/documentation/swift/swift_standard_library/

请参考:- https://hasancan.tech.blog/2018/01/17/import-foundation-vs-uikit/

答案 2 :(得分:0)

import Foundation 用于访问NSObject或其子类之一。NSObject表示我们可以使用 objective C 运行时功能扩展我们的类。但是,导入UIKit或import swift,在创建xcode项目时会自动生成