2016-09-03 2 views
0

내 iOS 앱에는 0부터 시작하지만 3,000000000000이 될 수있는 숫자 변수가 있습니다.NSCoding을 사용하여 Int64 변수를 저장하는 방법

Int로 선언하면 Int 유형이 Int64 유형 (최대 값 9,223,372,036854775807)을 참조하기 때문에 64 비트 장치에서는 문제가 없습니다. 그러나 32 비트 장치에서 Int 유형은 최대 값 2,147,483,647 인 Int32 유형을 나타냅니다. 분명히 너무 작습니다.

이 문제에 접근하여 32 비트 장치에서 제대로 실행하려면 어떻게해야합니까?

만약 내가 제대로 이해하고, 내가 INT64로 변수를 선언 할 수 있습니다 그것은 32 비트 및 64 비트 디바이스에서 잘 될 것입니다 :

var myNumber:Int64 = 0 

그러나, 내 데이터를 유지하기 위해 NSCoding를 사용하고 내가

myNumber = aDecoder.decodeIntegerForKey("MyNumber") 

오류 : 'INT64'를 입력 유형 '지능'의 값을 할당 할 수 없습니다

aCoder.encodeInteger(myNumber, forKey: "MyNumber") 
0 인코딩과 디코딩을 시도 할 때 오류 메시지를 받고

오류 : 'Int64'유형의 값을 예상 인수 유형 'Int'로 변환 할 수 없습니다.

이 변수에 NSCoding을 어떻게 사용합니까? 또는 Int64로 선언하는 것보다 많은 수의 것을 처리 할 수있는 더 좋은 방법이 있습니까?

+0

'encodeObject'를 사용하거나 두 개의 정수를 사용하십시오. – 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") 
} 
관련 문제