#ios #swift #swiftui
#iOS #swift #swiftui
Вопрос:
Я использую Xcode версии 12.0.1 (12A7300)
Я скачал этот код от Apple, чтобы протестировать создание монограммы с использованием PersonNameComponents.
https://developer.apple.com/documentation/foundation/formatter/displaying_human-friendly_content
Я создал новый проект в Xcode, чтобы переделать Monogram.swift из кода Apple.
Моя проблема в том, что я не могу инициализировать 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:
Ошибка довольно очевидна PersonNameComponentsFormatter
, у нее нет инициализаторов, которые не принимают аргументов. Вероятно, вы забыли включить в свой проект пользовательский init, указанный в NamesView.swift
файле:
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
}
}