41

SwiftでネイティブのSwift StringまたはNSStringからCFStringを作成するにはどうすればよいですか

    let path:String = NSBundle.mainBundle().pathForResource(name.stringByDeletingPathExtension, ofType:"pdf")
    let string:CFString = ??? path
    let url:CFURLRef = CFURLCreateWithFileSystemPath(allocator:kCFAllocatorDefault, filePath:string, pathStyle:CFURLPathStyle.CFURLPOSIXPathStyle, isDirectory:false)
4

5 に答える 5

47

キャストするだけです:

var str = "Hello, playground" as CFString
NSString(format: "type id: %d", CFGetTypeID(str))

import Foundationキャストが機能する必要があることに注意してくださいas CFString
それ以外の場合はimport CoreFoundation、キャストを強制する必要がありますas! CFString

于 2014-06-06T21:14:55.440 に答える
29

非リテラル文字列を変換したい場合は、それを NSString にキャストする必要があります。

let replacement = "World"
let string = "Hello, \(replacement)"

let cfstring:CFString = string as NSString

Swift は、swift 文字列を NSString に変換する方法と NSString を CFString に変換する方法を知っていますが、両方のステップを 1 つで行う方法を知らないようです。

于 2014-07-18T07:55:26.543 に答える
4

今日、私は C API をテストするためにプレイグラウンドでこれを実行しようとしていて、うまくいきましimport Foundation"string" as CFString

于 2016-01-09T20:33:52.047 に答える
4

CFString と NSString の間、または NSString と String の間でキャストします。トリックは、CFString と String の間を移動するときに二重キャストする必要があることです。

これは機能します:

var cfstr: CFString = "Why does Swift require double casting!?"
var nsstr: NSString = cfstr as NSString
var str: String = nsstr as String

これにより、「'CFString' は 'NSString' のサブタイプではありません」というエラーが発生します。

var cfstr: CFString = "Why does Swift require double casting!?"
var str: String = cfstr as String
于 2014-07-23T00:52:56.983 に答える