ahe*_*eze 5 ios swift swiftui combine
我正在尝试倾听@State变化并遵循这个答案。这是我的代码:
import SwiftUI
struct ContentView: View {
@State var isOn = false
var body: some View {
Toggle("Selection", isOn: $isOn)
.onReceive(Just(isOn)) { isOn in
print("Toggle is on? \(isOn)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
它无法编译:我得到“无法在范围内找到‘Just’”
Just是组合框架的一部分。但是,我以为SwiftUI已经导入了Combine?我Command单击import SwiftUI,然后按Jump to Definition,它就位于顶部。
一旦我添加import Combine到我的代码中,它就会编译。但这不应该是多余和不必要的吗?
仅仅因为您从某个框架/库(模块 A)导入并不自动意味着您可以访问您刚刚 导入的文件中模块 A 导入的所有类型(模块 B、C、D)A。
一个完美的例子就是您正在经历的情况,其中SwiftUIimport Combine,但如果不显式导入自己,则无法Just在代码中使用Combine。
然而,情况并非总是如此。例如,CGFloat是在 中定义的CoreGraphics,但如果导入 则可以访问它SwiftUI。如果您只导入Foundation. 当然,这不是一个完美的例子,因为你的问题引用了两个 Swift 框架,而 CoreGraphics 和 Foundation 来自 Objective-C 世界。
为了让您不必导入,CombineSwiftUI 框架必须为您导出合并。这可以使用以下方法完成@_export:
由于尚未完成此操作,因此Combine当您想要使用其类型时,您会陷入导入困境,就像您CoreData想要使用CoreData类型时必须导入一样,即使像 一样Combine,它是由 SwiftUI导入(但不导出)的。
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |