Ответ 1
Это то, о чем говорят операторы Swift, и я хотел узнать больше, поэтому я просмотрел его.
Существует протокол, который называется Streamable
:
protocol Streamable {
func writeTo<Target : OutputStream>(inout target: Target)
}
OutputStream
:
protocol OutputStream {
func write(string: String)
}
write
позволяет записывать объект.
String
соответствует тому, что позволяет легко записывать в и из:
var target = String()
"this is a message".writeTo(&target)
println(target)
// this is a message
Запись в файл:
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
Существует также writeToUrl
.
Я предполагаю, что все эти функции построены поверх потоков Cocoa, которые имеют схожие функции:
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()