UnManaged な CFString

いつも自分で書くコードはすっかりSwiftですが、システムライブラリはまだまだObjective-Cのこともあります。

ObjCのライブラリが返してくれる CFString をSwiftの String にするメモ。

基本的には、CFString はそのままConvertできます。

var str1: CFString = "Hello!" as CFString
var str2: String = str1 as String

ただ、Unmanaged でかえされた場合には takeRetainedValue を使いましょう。

var propertyStr: Unmanaged<CFString>?

//これだとダメ
let deviceName1: String = propertyStr as? String ?? "(cannot convert...)" 

//これならOK
let deviceName2: String = propertyStr?.takeRetainedValue() as? String ?? "(cannot convert...)"