よく使うものだけをピックアップしました。
C言語の単純型とSwiftの型の相関関係
| C言語の単純型 | Swiftの型 |
|---|---|
| Bool | Bool |
| short | int16 |
| int | int32 |
| long | Int |
| long long | Int64 |
| float | Float |
| double | Double |
Objective-Cのポインタ型とSwiftの型
| 種類 | C言語の型 | Swiftの型 |
|---|---|---|
| ポインタ | const T * | UnsafePointer |
| T * | UnsafeMutablePointer | |
| const void * | UnsafeRawPointer | |
| void * | UnsafeMutableRawPointer | |
| クラスCのインスタンス | C * const * | UnsafePointer |
| C * __strong | UnsafeMutablePointer | |
| C ** | AutoreleasingUnsafeMutablePointer | |
| 関数 | T (*func)(U) | @convention(c)(U) -> T |
| T (*func)(void) | @convention(c)() -> T | |
| ブロック | T (^block)(U) | @convention(block)(U) -> T |
Array から NSArray への変換方法
let intList:[Int] = [1,2,3,4]
let cArray = intList as NSArray
NSArray から Array への変換方法
let ns1: NSArray = [100, "sample", 200]
let ns2: NSArray = [10, 20, 30]
if let ar1 = ns1 as? [Any] {
print(type(of: ar1))
}
if let ar2 = ns2 as? [Int] {
print(type(of: ar2))
}
配列arrayから文字列だけを取り出したい場合の便利な方法
let strList = array.filter{ $0 is String }
Swift のDictionaryはそのままNSDictionaryに変換可能。
NSDictionaryが
複数の型のキーを含まなければならない場合は AnyHashable型のキー
値が複数の型の場合は Any型の値
をもつ辞書を作れば変換可能
let d:[AnyHashable: Any] = [AnyHashable(0): "Zero",
AnyHashable("II"): 2]
let nsDic = d as NSDictionary
詳細は「詳解Swift」を参考にして書きました