[英]Handle printf differently in swift
我在 iOS 應用程序中使用 C 庫。 有時,庫會調用 printf 命令並打印到 Xcode 中的控制台。 有沒有辦法在 swift 中訪問打印的文本?
我想讓一些輸出在應用程序中可見。
如果我明白你在問什么......
我不確定在純 Swift 中是否可行,但您可以將 .m 文件添加到您的 Swift 項目並在那里攔截printf
調用。 當您收到一個時,您可以決定您還需要用它做什么。
在這個例子中,我在printf
期間發布了一個通知,我在“AppDelegate.swift”中監聽。
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];
}
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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.