第一个 SwiftUI 项目:)我有一个来自顶级视图中的列表中的 NavLink,该列表调用详细信息视图。它一直在工作,直到我需要将结构的@State变量添加到详细信息视图中,现在调用参数列表与编译器期望的不匹配:
ZStack {
VStack {
NavigationView {
List(gList) { gard in
NavigationLink(destination:
SelectGlyph(catList: gard.category,
firstGlyph: gard.ex1,
descr: gard.title,
selectedGlyph: Glyph() )
{
并且细节视图开始:
struct SelectGlyph: View {
var catList: String
var firstGlyph: String
var descr: String
@State var selectedGlyph:Glyph = Glyph()
var body: some View {
ZStack{
VStack() {
VStack {
VStack {
VStack {
并且字形结构被定义为:
struct Glyph: Codable, Identifiable, Equatable {
var id:String {
return Gardiner
}
var Hieroglyph: String
var Gardiner: String
let Unicode: String
let Description: String
let Transliteration: String
let Phonetic: String
let Notes: String
init() {
self.Hieroglyph = ""
self.Gardiner = ""
self.Unicode = ""
self.Description = ""
self.Transliteration = ""
self.Phonetic = ""
self.Notes = ""
}
init(Hiero:String, Gard:String, Uni:String, Desc:String, trans:String, phon:String, notes:String) {
self.Hieroglyph = Hiero
self.Gardiner = Gard
self.Unicode = Uni
self.Description = Desc
self.Transliteration = trans
self.Phonetic = phon
self.Notes = notes
}
}
错误出现在顶级ContentView导航链接目标中:
'SelectGlyph.Type' is not convertible to '(String, String, String, Glyph) -> SelectGlyph'
我在调用列表中尝试了几种变化,并试图删除SelectGlyph中的@State包装,但都没有效果。任何帮助都将不胜感激!如果我知道如何在一个视图中指定一个局部变量,而不把它作为调用中的一个必需参数,那就好了(我确信我在这里漏掉了什么!)
作为对Asperi的响应,我尝试了SelectGlyph视图的显式初始化程序,但仍然在同一个地方出现了相同的错误:
struct ContentView: View {
var gList: [GardinerList] = gardinerTest
var body: some View {
UINavigationBar.appearance().backgroundColor = .yellow
return
ZStack {
VStack {
NavigationView {
List(gList) { gard in
NavigationLink(destination:
SelectGlyph(catList: gard.category, <- Error Here
firstGlyph: gard.ex1,
descr: gard.title,
selectedGlyph: Glyph() )
{
Text(gard.category)
.fontWeight(.bold)
.foregroundColor(Color.green)
SelectGlyph视图现在修改为具有显式的init()。我尝试将init()中的selectedGlyph指定为_selectedGlyph和自_selectedGlyph
struct SelectGlyph: View {
var catList: String
var firstGlyph: String
var descr: String
@State private var selectedGlyph:Glyph = Glyph()
init(catList: String, firstGlyph: String, descr: String, selectedGlyph:Glyph) {
self.catList = catList
self.firstGlyph = firstGlyph
self.descr = descr
self._selectedGlyph = State<Glyph>(initialValue: selectedGlyph)
}
var body: some View {
ZStack{
VStack() {
它就在这里
NavigationLink(destination:
SelectGlyph(catList: gard.category,
firstGlyph: gard.ex1,
descr: gard.title,
selectedGlyph: Glyph() )
这里需要显式的初始值设定项,如
struct SelectGlyph: View {
var catList: String
var firstGlyph: String
var descr: String
@State private var selectedGlyph:Glyph // << always keep @State private !!
init(catList: String, firstGlyph: String, descr: String, selectedGlyph:Glyph) {
self.catList = catList
self.firstGlyph = firstGlyph
self.descr = descr
_selectedGlyph = State<Glyph>(initialValue: selectedGlyph)
}
更新:再来一个。如果不是复制粘贴错误,则您错过了导航链接
中的“')
NavigationLink(destination:
SelectGlyph(catList: gard.category,
firstGlyph: gard.ex1,
descr: gard.title,
selectedGlyph: Glyph() )) // << here !!
{
问题内容: 如何将经典字符串转换为f字符串? 输出: 所需的输出: 问题答案: f字符串是 语法 ,而不是对象类型。您不能将任意字符串转换为该语法,该语法会创建一个字符串对象,而不是相反。 我假设您想用作模板,因此只需在对象上使用方法: 如果要提供可配置的模板服务,请创建一个包含所有可以插值的字段的名称空间字典,并与调用语法一起使用以应用名称空间: 然后,用户可以在字段中的名称空间中使用任何键(或
我遇到了这样一个java字符串,其中以下内容是错误的: 我想这是因为字符串构造函数默认将主体字节[]的编码视为UTF-8,我不是100%确定。我如何能够将此字符串存储在字节[]中,并能够稍后将其转换回来?我想我需要能够确定字节[]的编码方式。我该怎么做呢? 一些上下文:我需要字节[],以便压缩数据,将其存储在数据库中,然后解压缩并将未压缩的字节[]转换回原始字符串。这个字符串最初来自某个下载了网页
问题内容: 是否可以将模板字符串创建为常规字符串 然后将其转换为模板字符串 没有,以及其他动态代码生成方式? 问题答案: 由于您的模板字符串必须动态地(在运行时)引用该变量,因此答案是: 否,没有动态代码生成是不可能的。 但这很简单:
问题 怎样将C中的字符串转换为Python字节或一个字符串对象? 解决方案 C字符串使用一对 char * 和 int 来表示, 你需要决定字符串到底是用一个原始字节字符串还是一个Unicode字符串来表示。 字节对象可以像下面这样使用 Py_BuildValue() 来构建: char *s; /* Pointer to C string data */ int len; /*
如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?
问题内容: Oracle Java Community网站上的一篇文章提供了以下方法作为示例(对于JPA Converter,但这并不相关): 将String y强制转换为String val有什么用?有正当的理由吗? 原始文章:JPA的新增功能 问题答案: 这样的转换是完全没有必要的。我可以想象那是以前 但是后来参数类型更改为,而作者只是忘了删除强制类型转换。