[swift-users] Coerce NSData to Data

Ryan Lovelett swift-dev at ryan.lovelett.me
Fri Oct 14 13:15:27 CDT 2016


I'm puzzeled by the behavior of the automatic coercion. Specifically
when something will work and when it will not. It at least has something
to do with the platform. That much I have tracked down.

I've attached a file, bridge.swift, that on Linux will fail to compile
with the error: cannot convert value of type 'NSData' to type 'Data' in
coercion. However, on Darwin it compiles just fine.

(The contents of the file just incase it gets stripped)

import Foundation

let md = NSData(bytes: [0x0D, 0x0A, 0x0D, 0x0A], length: 4)
_ = md as Data

On Linux the `md` has a method `_bridgeToSwift()` that returns the
`Data` I am looking for. But of course, the Darwin version does not.

Which begs the question what is the cross-platform way of doing things?
I'm hoping it is not `if #os(Linux)`...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bridge.swift
Type: application/octet-stream
Size: 94 bytes
Desc: not available
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161014/792dc464/attachment.obj>


More information about the swift-users mailing list