2016-09-03 6 views
0

私のiOSアプリケーションでは、0から始まる数値変数がありますが、最終的には3,000,000,000,000になる可能性があります。NSCodingを使用してInt64変数を保存する方法

Intとして宣言すると、Int型がInt64型(最大値9,223,372,036,854,775,807)を参照するため、64ビットデバイスで問題ありません。しかし、32ビットデバイスでは、Int型はInt32型を参照し、最大値は2,147,483,647です。それは明らかに小さすぎます。

この問題に最も近づき、32ビットデバイスで正しく動作させるにはどうすればよいですか?

私が正しく理解していれば、私はInt64型として変数を宣言することができ、それは両方の32ビットおよび64ビットのデバイス上で罰金になります:

var myNumber:Int64 = 0 

は、しかし、私は私のデータを永続化するためにNSCodingを使用して、私は

myNumber = aDecoder.decodeIntegerForKey("MyNumber") 

エラー:「Int64の」をタイプするタイプ 'int型の値を割り当てることができません

aCoder.encodeInteger(myNumber, forKey: "MyNumber") 
0エンコードし、それを解読しようとするとエラーメッセージを取得

エラー: 'Int64'型の値を 'Int'型に変換できません

この変数でNSCodingを使用するにはどうすればよいですか?それとも、Int64として宣言するよりも、私の大きな数を扱う良い方法がありますか?

+0

'encodeObject'を使うか、別々の2つの整数を使います。 – Sulthan

+4

'NSCoder'は' encodeInt64'と 'decodeInt64'メソッドを持っています – dan

+0

ありがとう、私はそれを知らなかった。あなたが答えとしてそれを置くなら、それを正しいものとしてマークします。 – Eatton

答えて

0
required convenience init?(coder aDecoder: NSCoder) { 
    let exBytesVideo = aDecoder.decodeInt64ForKey("myInt64Number") 
} 

func encodeWithCoder(aCoder: NSCoder) { 
    aCoder.encodeInt64(self.expectedBytesVideo, forKey: "myInt64Number") 
} 
関連する問題