私の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として宣言するよりも、私の大きな数を扱う良い方法がありますか?
'encodeObject'を使うか、別々の2つの整数を使います。 – Sulthan
'NSCoder'は' encodeInt64'と 'decodeInt64'メソッドを持っています – dan
ありがとう、私はそれを知らなかった。あなたが答えとしてそれを置くなら、それを正しいものとしてマークします。 – Eatton