导入 Swift 与导入基础

import Swift vs import Foundation

问题

import Swiftimport Foundation有什么区别?

直到我读到 by Martin R,我什至不知道有一个 import Swift

阅读

我找不到文档,Google 搜索也没有找到太多结果。

我试过的

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

如果我猜的话,我会说您为 Swift 个项目导入 Swift,为 Objective-C 个项目或 Swift 个项目导入 Foundation使用 Objective-C 类(如 NSString)。

在 Playground 中对此进行测试:

import Foundation
import Swift

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

注释掉import Swift没有错误,strString类型。但是,注释掉 import Foundation 会导致 NSString 出现 "undeclared type" 错误。

我的问题重温

我很乐意放弃 Foundation 并只使用 Swift。所以我一直导入 Swift 是否正确,除非我特别需要使用旧的 Objective-C 类 之一?

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

如果您还没有阅读,Apple 会解释 Foundation 框架 here

如果您想使用字符串、日期等,您需要导入 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/

import Foundation 用于访问 NSObject 或其子对象之一 class.NSObject 意味着我们可以使用 [=18 扩展我们的 class =] 运行时 features.But 导入 UIKit 或导入 swift,在我们创建 xcode 项目时自动生成