Я пытаюсь обновить свое приложение для использования OSLOG (logger).
Система, которую я в настоящее время использую, позволяет мне использовать простую строковую интерполяцию, и я ожидал то же самое с Oslog, но я вижу все типы ошибок на простом тесте: < /p>
import SwiftUI
import OSLog
extension Logger {
static let statistics = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "NS")
}
struct MyCustom: CustomStringConvertible {
let description = "My Custom description"
}
struct MyDebug: CustomDebugStringConvertible {
let debugDescription = "My Debug description"
}
struct NoneOfTheAbove {
var defaultValue = false
}
struct Person: Identifiable {
let id = UUID()
let index: Int
let name: String
let age: Int
static let maxNameLength = 15
}
@main
struct OggTstApp: App {
let myCustom = MyCustom()
let myDebug = MyDebug()
let noneOfTheAbove = NoneOfTheAbove()
var optionalCustom: MyCustom?
var optionalDebug: MyDebug? = MyDebug()
init() {
print("init")
Logger.statistics.debug("debug init")
}
var body: some Scene {
WindowGroup {
ContentView()
.onAppear {
testLogs()
}
}
}
func testLogs() {
print("structs")
Logger.statistics.error("\(myCustom)")
// Logger.statistics.error("This is a test: \(myDebug)") // Type of expression is ambiguous without a type annotation
let string = "\(myDebug)"
Logger.statistics.error("\(string)")
// Logger.statistics.error(noneOfTheAbove) // Cannot convert value of type 'NoneOfTheAbove' to expected argument type 'OSLogMessage'
// Logger.statistics.error("\(noneOfTheAbove)") // Type of expression is ambiguous without a type annotation
let noneOTA = "\(noneOfTheAbove)"
// Logger.statistics.error(noneOTA) // Cannot convert value of type 'String' to expected argument type 'OSLogMessage'
Logger.statistics.error("\(noneOTA)")
// Logger.statistics.warning(optionalCustom) // Cannot convert value of type 'MyCustom?' to expected argument type 'OSLogMessage'
let optCust = "\(optionalCustom)" // Warning
Logger.statistics.warning("\(optCust)")
// Logger.statistics.log("Optional not nil: \(optionalDebug)") // No exact matches in call to instance method 'appendInterpolation'
let optNotNil = "\(optionalDebug)" // Warning
Logger.statistics.log("\(optNotNil)")
let aPerson = Person(index: 2, name: "George", age: 21)
let people = [aPerson]
people.forEach {
testLog($0)
}
}
func testLog(_ person: Person) {
Logger.statistics.debug("\(person.index) \(person.name) \(person.id) \(person.age)")
// Logger.statistics.debug("\(person.index) \(person.name, align: .left(columns: Person.maxNameLength)) \(person.id) \(person.age, format: .fixed(precision: 2))") // No exact matches in call to instance method 'appendInterpolation'
}
}
< /code>
Dong, эта двойная строковая интерполяция, чтобы заставить ее работать, кажется действительно болезненным.
Предупреждения ожидаются, хотя я хотел бы написать некоторые расширения, чтобы заставить их уйти, но пока я фокусируюсь на ошибках. < /p>
Я делаю что -то не так? Есть ли улов в этом?>
Подробнее здесь: https://stackoverflow.com/questions/784 ... erpolation
Oslog (logger), предоставляя ошибки с помощью простой строковой интерполяции ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Oslog (logger), предоставляя ошибки с помощью простой строковой интерполяции
Anonymous » » в форуме IOS - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Silence Pylint Предупреждение об неиспользованных переменных для строковой интерполяции
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-