To jest coś, o czym doktorzy Swift są spokojni i chciałem wiedzieć więcej o tym, więc zajrzałem do tego.
Jest to protokół, który nazywa Streamable
:
protocol Streamable {
func writeTo<Target : OutputStream>(inout target: Target)
}
OutputStream
:
protocol OutputStream {
func write(string: String)
}
write
pozwala obiekt do zapisania.
String
zgodny zarówno, dzięki czemu łatwo napisać do iz:
var target = String()
"this is a message".writeTo(&target)
println(target)
// this is a message
Zapis do pliku:
var msg = "this will be written to an output file"
msg.writeToFile("output.txt", atomically: false, encoding: NSUTF8StringEncoding, error: nil)
// creates 'output.txt' in the same folder as the executable
Istnieje również writeToUrl
.
zakładam wszystkie te funkcje są wbudowane w górnej części kakao strumieni, które mają podobną funkcjonalność:
var os = NSOutputStream(toFileAtPath: "output.txt", append: true)
os.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
var msg = "a truly remarkable message"
var ptr:CConstPointer<UInt8> = msg.nulTerminatedUTF8
os.open()
os.write(ptr, maxLength: msg.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
os.close()
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Streams/ Artykuły/CocoaStreamsOverview.html –
Wydaje się dziwne, że nie masz czegoś tak podstawowego jak część standardowej biblioteki. NSStream naprawdę nie jest tak, jak byś to zrobił, gdybyś napisał go szybko. – sanz
Zgadzam się, że Swift w tej chwili brakuje w tym obszarze, ale został zaprojektowany do pracy z ramami Cocoa. czy jest coś konkretnego, co próbujesz zrobić? –