Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS的快速日志记录>;=8带有os_日志和NSLog_Ios_Swift_Logging_Nslog - Fatal编程技术网

iOS的快速日志记录>;=8带有os_日志和NSLog

iOS的快速日志记录>;=8带有os_日志和NSLog,ios,swift,logging,nslog,Ios,Swift,Logging,Nslog,我想使用os\u log(可用于iOS>=10.0)和NSLog编写自己的日志函数 我已经编写了以下代码: static func LogDebug(log: StaticString) { if #available(iOS 10.0, *) { os_log(log, type: .debug) } else { NSLog(log) } } 但是现在我得到一个例外,StaticString不能转换为普通字符串。你知道怎么解决这个问题

我想使用
os\u log
(可用于iOS>=10.0)和
NSLog
编写自己的日志函数

我已经编写了以下代码:

static func LogDebug(log: StaticString) {
    if #available(iOS 10.0, *) {
        os_log(log, type: .debug)
    } else {
        NSLog(log)
    }
}
但是现在我得到一个例外,StaticString不能转换为普通字符串。你知道怎么解决这个问题吗?

像这样试试

static func LogDebug(log: StaticString) {
    if #available(iOS 10.0, *) {
        os_log(log, type: .debug)
    } else {
        NSLog(String(describing: log))
    }
}
像这样试试

static func LogDebug(log: StaticString) {
    if #available(iOS 10.0, *) {
        os_log(log, type: .debug)
    } else {
        NSLog(String(describing: log))
    }
}

os_log()
NSLog()
的第一个参数都是格式字符串,包含 (以
%
开头),由以下变量参数列表展开

要记录任意字符串,请使用
%@
格式,后跟 一串否则,如果字符串包含
%
字符,则可能会崩溃或产生错误的输出:

func LogDebug(log: String) {
    if #available(iOS 10.0, macOS 10.12, *) {
        os_log("%@", type: .debug, log)
    } else {
        NSLog("%@", log)
    }
}

os_log()
NSLog()
的第一个参数都是格式字符串,包含 (以
%
开头),由以下变量参数列表展开

要记录任意字符串,请使用
%@
格式,后跟 一串否则,如果字符串包含
%
字符,则可能会崩溃或产生错误的输出:

func LogDebug(log: String) {
    if #available(iOS 10.0, macOS 10.12, *) {
        os_log("%@", type: .debug, log)
    } else {
        NSLog("%@", log)
    }
}

如果这样做,则会出现以下编译错误:
无法将“String”类型的值转换为预期的参数类型“StaticString”
,这意味着您在调用此函数时正在传递
StaticString
。否,它不会。我还没有调用此函数-这是一个编译错误。如果我尝试调用此函数,会出现以下错误:
'stringValue'不可用:请使用'String(\u:)'初始值设定项
如果执行此操作,则会出现以下编译错误:
无法将'String'类型的值转换为预期的参数类型'StaticString'
,这意味着您在调用此函数时正在传递
StaticString
。否,则不会。我还没有调用此函数-这是一个编译错误。如果我尝试调用此函数,则会出现以下错误:
“stringValue”不可用:使用“String(:)”初始值设定项