У меня есть этот код, который мне нужно использовать в других приложениях.
Этот код показывает сообщения, в которых присутствует имя локализованного приложения.
Итак, у меня есть локализованные строки, такие как:
"DoYou" = "Do you really want to close $$$?";
"Quit" = "Quit $$$";
"Keep Running" = "Keep $$$ Running";
Где $$$
должен быть заменен именем локализованного приложения во время выполнения.
Поскольку я хочу узнать об оболочках свойств, я пытался создать это:
extension String {
func findReplace(_ target: String, withString: String) -> String
{
return self.replacingOccurrences(of: target,
with: withString,
options: NSString.CompareOptions.literal,
range: nil)
}
}
@propertyWrapper
struct AdjustTextWithAppName<String> {
private var value: String?
init(wrappedValue: String?) {
self.value = wrappedValue
}
var wrappedValue: String? {
get { value }
set {
if let localizedAppName = Bundle.main.localizedInfoDictionary?["CFBundleName"] as? String {
let replaced = value.findReplace("$$$", withString: localizedAppName)
}
value = nil
}
}
}
Я получаю эту ошибку в строке replaced
:
Значение типа String? не имеет имени findReplace
Я также пытался использовать эту строку
let replaced = value!.findReplace("$$$", withString: localizedAppName)
Та же ошибка ...
Строка может содержать имя приложения более одного раза. Вот почему у меня есть это расширение до String
.