我正在 Xcode 11 上构建一个 SwiftUI 应用程序,但是每当我切换到应用程序中的特定选项卡时都会立即终止。
问题是,它总是指向Application Delegate文件,我认为这并不是真正的问题。我也在控制台中收到此错误,仅此precondition failure: invalid input index: 2而已,没有关于此错误来自哪个文件、数组或函数的更多详细信息。
Xcode 中是否有任何方法可以隔离导致此问题的原因?
我有这段代码来显示自定义行的列表。
struct ContentView : View {
var body: some View {
VStack(alignment: .leading) {
List(1...10) {_ in
CustomRow()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我想删除每一行上的行。我尝试不使用List,而是使用ForEachinside,ScrollView但是它完全删除了所有样式,包括其填充和边距。我只想删除行,仅此而已。
请帮忙,谢谢。
environment variables我们在Xcode 方案中有这些
这段代码在本地运行良好
let webHost = ProcessInfo.processInfo.environment["HOST_URL"]!
let apiHost = ProcessInfo.processInfo.environment["API_URL"]!
let beamsKey = ProcessInfo.processInfo.environment["BEAMS_KEY"]!
let mixpanelKey = ProcessInfo.processInfo.environment["MIXPANEL_KEY"]!
Run Code Online (Sandbox Code Playgroud)
但是,当使用Xcode Cloud与相同的environment variables.
它构建成功,但应用程序因该日志而崩溃。
使用Xcode Cloud时读取这些环境变量的正确方法是什么?
我正在尝试在 Swift 5.7 中创建一个Codable结构体[any Protocol]
struct Account: Codable {
var id: String
var name: String
var wallets: [any Wallet]
}
protocol Wallet: Codable {
var id: String { get set }
//... other codable properties
}
Run Code Online (Sandbox Code Playgroud)
但是,即使Wallet符合Codable
类型“帐户”不符合协议“可解码”
类型“帐户”不符合协议“可编码”
是否可以做出any符合Codable?
或者 Swift 5.7 仍然无法做到这一点?
编辑:正如回答的那样,您必须实现自己的一致性。这就是我的做法:
protocol Wallet: Identifiable, Codable {
var id: String { get set }
}
struct DigitalWallet: Wallet {
var id: String
// other properties …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过以下代码使用 @Observable 和 @Environment 来使用新的 Swift 宏:
import SwiftUI
import Observation
@Observable class Note {
var text = ""
}
struct ContentView: View {
@State var note = Note()
var body: some View {
FormView()
.environment(note)
}
}
struct FormView: View {
@Environment(Note.self) var note
var body: some View {
Form {
TextField("write here", text: $note.text)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,无法构建并出现以下错误:
Cannot find '$note' in scope
删除$in 的$note结果是:
Cannot convert value of type 'String' to expected argument …
我试图NavigationSplitView与其中DetailView包含taskor 的a 一起使用onAppear,但它似乎只运行一次。
enum MenuItem: String, Hashable, Identifiable, CaseIterable {
case menu1
case menu2
case menu3
case menu4
case menu5
var id: String { rawValue }
}
struct ContentView: View {
@State var selection: MenuItem?
var body: some View {
NavigationSplitView {
List(MenuItem.allCases, selection: $selection) { item in
NavigationLink(value: item) {
Text(item.rawValue)
}
}
} detail: {
if let selection {
DetailView(menuItem: selection)
} else {
Text("Default")
}
}
}
}
struct …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过使用NavigationView来利用SwiftUI 2.0 的内置侧边栏,如下所示:
NavigationView {
MainView()
ListView()
DetailView()
}.navigationBarHidden(true)
Run Code Online (Sandbox Code Playgroud)
但由于我想使用自己的自定义后退按钮,因此我隐藏了导航栏并尝试使用不起作用的代码切换侧边栏。
self.presentationMode.wrappedValue.dismiss()
Run Code Online (Sandbox Code Playgroud)
我已经看到了很多针对macOS的解决方案:
NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)
Run Code Online (Sandbox Code Playgroud)
但我似乎找不到iPad的同等产品,提前致谢。
我正在尝试使用NavigationStack内部NavigationSplitView。
struct ContentView: View {
@State var mainMenu: MenuItem?
@State var subMenu: SubMenuItem?
var body: some View {
NavigationSplitView {
List(MenuItem.allCases, selection: $mainMenu) { item in
NavigationLink(value: item) {
Text(item.rawValue)
}
}
} detail: {
NavigationStack {
List(SubMenuItem.allCases, selection: $subMenu) { item in
NavigationLink(value: item) {
Text(item.rawValue)
}
}
.navigationDestination(for: SubMenuItem.self) { selected in
DetailView(item: selected)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
struct DetailView: View {
let item: SubMenuItem
var body: some View {
Text(item.id)
}
} …Run Code Online (Sandbox Code Playgroud) ios swiftui swiftui-navigationlink swiftui-navigationsplitview swiftui-navigationstack
swift ×6
swiftui ×6
xcode ×3
swiftui-navigationsplitview ×2
codable ×1
debugging ×1
ios ×1
ipados ×1
swift-macro ×1
swift5 ×1
xcode-cloud ×1