导入Swift vs import Foundation

Sur*_*gch 31 import objective-c foundation ios swift

import Swift和之间有什么区别import Foundation

直到我读这条评论马丁- [R ,我甚至不知道有一个import Swift.

我找不到文档,谷歌搜索没有太多.

我尝试了什么

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

如果我猜测,我会说您导入Swift for Swift项目,并导入Foundation for Objective-C项目,或者可能导入使用Objective-C类的Swift项目(如NSString).

在Playground中测试:

import Foundation
import Swift

var str = "Hello, playground"
let str2: NSString = "hello"
let str3: String = "hello"
Run Code Online (Sandbox Code Playgroud)

注释掉import Swift没有错误,str属于String类型.但是,注释掉import Foundation会给出"未声明的类型"错误NSString.

我的问题重新审视

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

Sid*_*ney 22

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

如果您还没有阅读,Apple会在这里解释Foundation框架.

  • 我注意到许多“ .swift”文件的构建都没有“ import Swift”行或任何其他“ import”行,但是它们使用了“ Array”和“ Dictionary”等。为什么会这样?我已经问过[问题](/sf/ask/3743433501/)。谢谢! (2认同)

ara*_*_86 12

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