2016-05-16 15 views
4

Ich benutze Swift 2.2 unter Linux und ich muss einige Debug-Ausgabe auf den Standard-Fehler-Stream schreiben.Wie auf Stderr mit Swift drucken?

Derzeit mache ich folgendes:

import Foundation 

public struct StderrOutputStream: OutputStreamType { 
    public mutating func write(string: String) { fputs(string, stderr) } 
} 
public var errStream = StderrOutputStream() 

debugPrint("Debug messages...", toStream: &errStream) 

Allerdings habe ich Swift auf 2.2.1 aktualisiert, aber es scheint, dass Foundation ist nicht mehr verfügbar.

Wie schreibe ich mit Swift 2.2.1 auf den Standard-Fehler-Stream (und das wird immer noch mit dem nächsten Upgrade)?

+0

ich nicht Swift auf Linux zu tun haben derzeit installiert, aber Laut den Dokumenten sollte 'import Glibc' den größten Teil der C-Bibliothek importieren (zB stderr). –

+0

Wird es auch unter Mac OS funktionieren? Wenn es tragbar ist, ist es besser. –

Antwort

5

Von https://swift.org/blog/swift-linux-port/:

Die Glibc Modul: Die meisten Linux-C-Standardbibliothek ist durch dieses Modul verfügbar sind ähnlich dem Darwin-Modul auf Apple-Plattformen.

So sollte dies auf alle Swift-Plattformen:

#if os(Linux) 
    import Glibc 
#else 
    import Darwin 
#endif 

public struct StderrOutputStream: OutputStreamType { 
    public mutating func write(string: String) { fputs(string, stderr) } 
} 
public var errStream = StderrOutputStream() 

debugPrint("Debug messages...", toStream: &errStream) 

Update für Swift 3:

public struct StderrOutputStream: TextOutputStream { 
    public mutating func write(_ string: String) { fputs(string, stderr) } 
} 
public var errStream = StderrOutputStream() 

debugPrint("Debug messages...", to: &errStream) // "Debug messages..." 
print("Debug messages...", to: &errStream)  // Debug messages... 
Verwandte Themen