提问人:nansjlee 提问时间:4/13/2023 更新时间:4/13/2023 访问量:43
为什么 swift 说当我不导入 cocoa 框架时,没有 String 的成员函数?
Why does swift say that when I don't import the cocoa framework, there are no member functions of the String?
问:
如果在 vs code 中运行以下函数,会出现 addingPercentEncoding 函数不存在的编译错误,但如果导入 cocoa 框架,它会正常运行。两者有什么区别?
答:
0赞
Anya Shenanigans
4/13/2023
#1
该方法 - 是桥接的一部分,它将 的行为添加到 swift String 实现中。此功能是通过导入 .进口也进口。.addingPercentageEncoding
NSString
NSString
Foundation
Cocoa
Foundation
是 的一部分,它也通过桥接被导入到 swift 类中。.urlQueryAllowed
NSCharacterSet
CharacterSet
此处的桥接引入了许多不需要在基类中重新实现的功能。
评论
0赞
Geoff Hackworth
4/13/2023
它并不是一个真正的字符串扩展,它是自动桥接到 Swift 类型(在两者之间转换)的一部分。NSString
String
0赞
Anya Shenanigans
4/13/2023
大多数 NSString 桥接是由 Foundation 完成的。我将更新答案,以便在这一点上更清楚一些
0赞
Geoff Hackworth
4/13/2023
我的评论也不是很清楚。我的意思是 NSString 桥接是 Foundation 的一部分,百分比编码实际上是 NSString 上的一种方法,而不是 String。
0赞
Ritesh Srivastav
4/13/2023
#2
addingPercentEncoding(withAllowedCharacters:) 函数是 Swift 中 Foundation 框架的一部分,它提供了一组用于处理字符串、日期、URL 等的常见数据类型和 API。另一方面,Cocoa 框架是一个建立在 Foundation 之上的更高级别的框架,并为开发 macOS 和 iOS 应用程序提供了额外的功能。
当你导入 Cocoa 时,你也在导入 Foundation,因为 Cocoa 依赖于 Foundation。这就是为什么您能够在没有任何编译错误的情况下使用 addingPercentEncoding(withAllowedCharacters:) 函数的原因。
评论
import Foundation
.导入 Cocoa 会将 Foundation 作为依赖项导入