簡體   English   中英

在 swift 中以不同的方式處理 printf

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM