Objective-CからSwiftへの書き換え作業、型、ポインタ、配列Array、辞書Dictionary

よく使うものだけをピックアップしました。 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」を参考にして書きました