読者です 読者をやめる 読者になる 読者になる

プログラマー技術調査室

うだつのあがらないプログラマーが技術調査結果を掲載するブログです。

Int64をAnyObjectに変換する

swift

今日はちょっとびっくりした事が。
Int64型の変数をAnyObject型の変数に代入しようとするとエラーが出たのです。

let int64Value: Int64 = 0
let anyObjectValue: AnyObject = int64Value

エラー:
Value of type 'Int64' does not conform to specified type AnyObject


AnyObject型って普通は変換なしで代入できるのですが・・・
では明示的に型変換してみるとどうか?

let int64Value: Int64 = 0
let anyObjectValue: AnyObject = int64Value as AnyObject!

エラー:
Cannot convert value of type 'Int64' to type 'AnyObject!' in coercion


だめです。
色々と調べてみて、以下のように書けばオッケーとわかりました。

let int64Value: Int64 = 0
let anyObjectValue: AnyObject = NSNumber(longLong: int64Value)


NSNumber型はObjective-Cのデータ型っぽいですね。
swiftでコーディングしているとObjective-Cで書かざるを得ない場面が多々あります。Objective-Cができれば断然楽でしょうね。
自分はできません・・・