io – swift是否有写入字节流的协议?
发布时间:2020-12-14 05:27:51 所属栏目:百科 来源:网络整理
导读:我在 Swift书中找不到关于io的任何内容.是否存在类似于Java的OutputStream或Go的Writer接口的用于编写字节流的通用协议?如果您正在编写一个返回流的类,您是否需要编写自己的协议或使用Objective C协议? 要明确我要求Swift原生接口不是因为我避免使用Object
我在
Swift书中找不到关于io的任何内容.是否存在类似于Java的OutputStream或Go的Writer接口的用于编写字节流的通用协议?如果您正在编写一个返回流的类,您是否需要编写自己的协议或使用Objective C协议?
要明确我要求Swift原生接口不是因为我避免使用Objective C或Cocoa,而是为了描述Swift到Swift代码的预期行为.
这是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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |