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