首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OSLog记录泛型类型的值?

如何使用OSLog记录泛型类型的值?
EN

Stack Overflow用户
提问于 2018-09-27 01:28:46
回答 1查看 146关注 0票数 1

我有以下包装UserDefaults的方法,这样我就可以以一种类型安全的方式与API交互。

代码语言:javascript
复制
public func item<T>(forKey key: Key<T>) -> T? {
    var item: T?
    defer {
        #if DEBUG
        os_log(item != nil ? "Returned value for key '%@'" : "Returned 'nil' for key '%@'", log: Defaults.defaultsLog, type: .debug, key.value)
        #endif
    }
    if let value = defaults.value(forKey: key.value) as? T, value is FoundationCodable || value is SwiftCodable {
        item = value
        return value
    }
    guard let data = defaults.data(forKey: key.value) else { return nil }
    guard let decoded = try? decoder.decode(T.self, from: data) else { return nil }
    item = decoded
    return decoded
}

我希望使用以下方法记录返回的值:

代码语言:javascript
复制
func os_log(_ message: StaticString, dso: UnsafeRawPointer? = #dsohandle, log: OSLog = default, type: OSLogType = default, _ args: CVarArg...)

但是,我的泛型T不符合CVarArg

是否可以记录返回的值?如果是这样的话,我该如何构建我的逻辑来实现它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 01:42:30

日志String(description:decoded) as NSString.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52528153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档