我有以下包装UserDefaults的方法,这样我就可以以一种类型安全的方式与API交互。
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
}我希望使用以下方法记录返回的值:
func os_log(_ message: StaticString, dso: UnsafeRawPointer? = #dsohandle, log: OSLog = default, type: OSLogType = default, _ args: CVarArg...)但是,我的泛型T不符合CVarArg。
是否可以记录返回的值?如果是这样的话,我该如何构建我的逻辑来实现它呢?
发布于 2018-09-27 01:42:30
日志String(description:decoded) as NSString.
https://stackoverflow.com/questions/52528153
复制相似问题