我在iOS应用中使用C库。有时库调用printf命令并在Xcode中打印到控制台。有没有办法在swift中访问打印文本?
我想在应用中看到一些输出。
答案 0 :(得分:1)
func dprint(_ items: Any...) {
let string: String
if items.count == 1, let s = items.first as? String {
string = s
} else if items.count > 1, let format = items.first as? String, let arguments = Array(items[1..<items.count]) as? [CVarArg] {
string = String(format: format, arguments: arguments)
} else {
string = ""
}
print(string)
}
答案 1 :(得分:0)
如果我明白你的要求......
我不确定它是否可以在纯Swift中使用,但您可以在Swift项目中添加.m文件并拦截printf
次调用。当你收到一个,你可以决定你还需要做什么。
在这个示例中,我在printf
期间发布了一条通知,我正在内部监听&#34; AppDelegate.swift&#34;。
int printf(const char * __restrict format, ...)
{
va_list args;
va_start(args, format);
NSString *f = [[NSString alloc] initWithUTF8String:format];
NSString *string = [[NSString alloc] initWithFormat:f arguments:args];
puts([string UTF8String]);
[[NSNotificationCenter defaultCenter] postNotificationName:@"printfNotification"
object:string];
va_end(args);
return (int)[string length];
}