我正在开发一个项目,并使用 Swift 包管理器来管理依赖项。我刚刚将 Xcode 更新到 12.5,并且删除了派生数据,因为我认为这可以解决我遇到的问题(问题导航器中没有显示任何错误,但会显示在报告导航器中)。无论如何,这不是主要问题。
删除派生数据后,应该重新获取该包。然而,这并没有发生。我尝试重置包缓存并重新启动我的 MacBook。这已经持续了两个小时,我在堆栈溢出上查找类似的问题,但我找不到任何解决方案。任何帮助都是天赐之物。
编辑:将项目克隆到另一个目录中以查看是否可以解决问题。没有运气。
问题本身很容易描述。我有两个项目来创建框架 FrameworkA 和 FrameworkB。框架 B 依赖于框架 A。两者都有一个带有运行脚本(Run_Script)的目标,用于在各自的项目根目录中生成 xcframework。我将产品 FrameworkA.xcframework 添加为 FrameworkB 的依赖项。正如预期的那样,我可以导入并使用 FrameworkA 并构建 Framework B 及其 xcframework 生成目标。到目前为止,一切都很好。
现在我向框架 A 添加一个 Swift 包(无论什么包),尝试构建框架 B。我无法构建框架 B。由于以下错误:
Failed to build module 'FrameworkA' for importation due to the errors above; the textual interface may be broken by project issues or a compiler bug
并在arm64-apple-ios-simulator.swiftinterface

这是 XCode 警告的编译器错误吗?我创建了一个示例项目来说明这个问题。测试XCF
第一次提交编译,最后一次失败。使用 XCode 13.3,默认工具链
我有一个字符串"Hello {world}"需要替换为"Hello ". 占位符的位置最后并不固定。我可能有不止一个占位符。
我正在使用 SwiftUI 并尝试使其与
Text("Hello {world}".replacingOccurrences(of: "{world}", with: "\(Image(systemName: "globe"))"))
Run Code Online (Sandbox Code Playgroud)
但很快发现这不起作用并提出了这个Hello Image(provider: SwiftUI.ImageProviderBox<SwiftUI.Image.(unknown context at $1ba606db0).NamedImageProvider>)
既然这有效
Text(LocalizedStringKey("Hello \(Image(systemName: "globe"))"))
Run Code Online (Sandbox Code Playgroud)
我认为我需要将 a 传递LocalizedStringKey到Text我再次尝试的
Text(LocalizedStringKey("Hello {world}".replacingOccurrences(of: "{world}", with: "\(Image(systemName: "globe"))")))
Text(LocalizedStringKey("Hello" + "\(Image(systemName: "globe"))")) //this doesn't work either
Run Code Online (Sandbox Code Playgroud)
但遇到了类似的问题SwiftUI.Text.Storage.anyTextStorage(SwiftUI.(unknown context at $1ba668448).LocalizedTextStorage
LocalizedStringKey我查看了和的 API LocalizedStringKey.StringInterpolation,但找不到解决此问题的方法。有没有办法可以替换占位符字符串?
我正在尝试调用一个带有多个(2+)参数的选择器(可以确定参数的数量).但是,选择器在编译时是未知的(实际上是使用NSSelectorFromString生成的).
在Objective-C中,我可以创建一个调用并为其设置参数并调用它.但这在Swift中不可用.有没有办法解决?喜欢:
let obj = SomeClass()
let selector = NSSelectorFromString("arg1:arg2:arg3:") //selector, arguments known only at runtime
//invoke selector
Run Code Online (Sandbox Code Playgroud) 用例非常简单。我有一个地点列表,每个地点对应一个地理围栏。我需要在用户位于其地理围栏内的特定行中启用导航。该列表是动态的,是从 API 中获取的。Stackoverflow 上也有类似的问题,但这些问题仅针对静态列表。
我尝试使用布尔字典,但我无法使其工作。
这是一个简化的模拟代码:
struct ListView: View {
@State private var navActive: [UUID: Bool] = [:]
var body: some View {
List (viewModel.allItems, id: \.id) { item in
NavigationLink(destination: DetailView(item), isActive: $navActive[item.id]) {
Text(item.name)
.onTapGesture {
if currentLocation.isInside(item.geofence) { navActive[item.id] = true }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:无法 在 NavigationLink isActive 参数上将类型 'Binding<Bool?>' 的值转换为预期的参数类型 'Binding<Bool>'。
注意:在接收带有 onRecieve 修饰符的 allItems 时,我已经用键值对填充了 navActive 字典
我需要从视图组件内的按钮推送一个模态视图,但应该只覆盖屏幕高度的下半部分,上半部分是半透明背景(黑色,不透明度为 30%)。在 fullscreenCover 视图构建器中设置最顶层视图的不透明度不起作用。任何帮助,将不胜感激。
struct ContentView: View {
@State var present: Bool = false
var body: some View {
VStack(spacing: 20) {
Button(action: {
present = true
}, label: {
Text("spawn translucent modal")
})
.fullScreenCover(isPresented: $present) {
VStack(spacing: 20) {
Spacer()
.frame(maxWidth: .infinity, minHeight: 100)
.background(Color.black)
.opacity(0.3)
Text("modal")
}
.background(Color.clear)
}
Text("some content")
Text("some more content")
}
}
}
Run Code Online (Sandbox Code Playgroud)