OSLog (Logger) выдает ошибки с помощью простой интерполяции строкIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 OSLog (Logger) выдает ошибки с помощью простой интерполяции строк

Сообщение Anonymous »

Я пытаюсь обновить свое приложение для использования OSLog (Logger).
Система, которую я сейчас использую, позволяет мне использовать простую интерполяцию строк, и я ожидал того же от OSLog, но вижу все виды ошибок в простом тесте:

Код: Выделить всё

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'
}
}
Думаю, интерполяция двойной строки, чтобы заставить ее работать, кажется очень болезненной.
Предупреждения в некотором роде ожидаемы, хотя мне хотелось бы написать некоторые расширения, чтобы они исчезли, но сейчас меня интересуют ошибки.
Я делаю что-то не так? Есть ли в этом какой-то трюк?
Кстати, я использую эти журналы только в консоли, и меня не особо волнует возможность их получения (меня устраивает сохранение интерполированных строковых значений как конфиденциальных, если это имеет значение).

Подробнее здесь: https://stackoverflow.com/questions/784 ... erpolation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»