当前位置: 首页 > 知识库问答 >
问题:

swiftui-PersonNameComponents()不能用变量初始化

国胤
2023-03-14

我正在使用Xcode版本12.0.1(12A7300)

我从Apple下载了这段代码,用来测试使用PersonNameComponents制作字母组合。

https://developer.apple.com/documentation/foundation/formatter/display_human-friendly_content

我用Xcode做了一个新项目,从苹果的代码中重做monogram.swift。

我的问题是:我不能在我的项目中用变量初始化PersonNameComponents,但它在Apple的项目中工作得很好。即使我复制类并将其粘贴到我的项目中,也会得到错误。

编译器错误:“参数传递给不带参数的调用。”编译程序错误屏幕截图

struct Monogram_Previews: PreviewProvider {
static var previews: some View {
    VStack {
        let sampleName = PersonNameComponents(familyName: "मिश्र", givenName: "करन")
        Monogram(nameComponents: sampleName, color: .orange)
            .padding(.bottom, 20)
        Monogram(nameComponents: sampleName, color: .blue, sideLength: 100)
            .padding(.bottom, 20)
        Monogram(nameComponents: sampleName, color: .pink, sideLength: 250)
    }
}

}

谢了。

共有1个答案

汤枫
2023-03-14

错误很明显,PersonNameComponentsFormatter没有不带参数的初始值设定项。您可能忘记在项目中包含namesview.swift文件中提供的自定义init:

extension PersonNameComponents {
    init(namePrefix: String? = nil,
         familyName: String? = nil,
         middleName: String? = nil,
         givenName: String? = nil,
         nameSuffix: String? = nil,
         nickname: String? = nil,
         phoneticRepresentation: PersonNameComponents? = nil) {
        self.init()
        self.namePrefix = namePrefix
        self.familyName = familyName
        self.middleName = middleName
        self.givenName = givenName
        self.nameSuffix = nameSuffix
        self.nickname = nickname
        self.phoneticRepresentation = phoneticRepresentation
    }
}
 类似资料:
  • 问题内容: 到目前为止,我一直在使用SwiftUI并了解etc 的概念(至少我希望我这样做)。 我遇到了一个愚蠢的问题,似乎找不到以下答案:如何初始化变量? 我有以下代码: 在我的预览代码中,我想传递该类型的参数: 我将如何进行初始化?尝试过: 甚至: 但是没有一个…有什么想法吗? 问题答案: 在您的应用中使用时,您确实需要提供一些绑定,例如上一个视图中的或。 对于仅需要固定值的特殊情况,可以使用

  • 问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事

  • 在Kotlin中,如果变量在应用程序启动时为,并且在创建后不能再次赋值为,那么有什么方法可以对其进行注释吗? 我不能将field设置为例如,因为它可以在某个时候被置为空,或者,因为它在使用之前被初始化(或者这可能是解决我的情况的正确方法?)。

  • 所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!

  • 我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我

  • 问题内容: 如何使用类型初始化变量? 因为我有错误 问题答案: 常量声明不能包含函数调用(某些例外,请参见下文),它们必须在编译时进行评估,而函数调用是在运行时进行的。 引用规格:常量: 常数值由符文,整数,浮点数,虚数或字符串文字表示,标识符表示常数,常数表达式,结果为常数的转换或某些内置结果的值函数,例如应用于任何值,或应用于某些表达式,以及应用于常量,以及应用于数字常量的复数。 并引用Spe

  • 问题内容: 我得到错误: TestCounter.java:115:变量计数器可能尚未初始化counters [i] = new Counter(i); 而且我不知道如何解决它。我知道我的课程“” 有效。下面是我的代码,如果您可以看一下,我将非常高兴。此代码包装在类的main方法中。 问题答案: 您尚未创建数组,只是声明了变量。 您需要这样做: 或类似的东西

  • 问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),所以会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值