2013-04-30 3 views
-2

10 진수를 저장해야하며 문자열, int 또는 숫자도 저장하지 않아도됩니다. 나중에 NSNumber를 변경할 수 있어야하기 때문에 NSNumber를 사용할 수 없습니다.10 진수 저장

전체 인터넷을 검색했지만 찾을 수없는 것 같습니다.

대답은 아마도 매우 간단 할 것입니다.

감사합니다.

UPDATE :

여기에 어떤 종류의 데이터

루프 코드 {

nslog (번호를 저장);

세이브 번호 3.1415926535;

나는 "여기에 어떤 종류의 데이터"의 루프 외부에서 해당 번호를 저장할 수 있어야

// 현재 문자열} 더 이상

을 존재하지 않는 저장된 모든 데이터를 삭제 왜냐하면 루프에서 생성 된 모든 것 위에 루프가 시작될 때 루프가 삭제되기 때문입니다.

+1

스마일 스는 Stackoverflows 품질 표준을 충족하지 못합니까? – Deni

+0

더블을 사용할 수 없습니까? – PurpleAlien

+2

"저장"하는 것을 어떻게 의미합니까? 귀하의 질문을 명확하게하고 귀하가하려는 것을 더 잘 설명 할 수있는 약간의 코드를 제공해주십시오. 'NSNumber'는 int, double, bool 등을 저장하고 검색하기위한 편리한 메소드들을 가지고 있습니다 ... 사실 NSNumber는 이러한 타입을 저장하는 좋은 방법입니다. – Aaron

답변

0

는 그냥 double를 사용합니다.

double myDouble = [number doubleValue]; 
+0

정확하게 원했던 것은 아니지만, 요점이 있습니다 ;-) – Deni

2

과 같이 NSNumber를 사용해보십시오 : 응용 프로그램이 종료 된 후

double myValue = 20.0; 

NSNumber* number = [NSNumber numberWithDouble:myValue]; 

// Do something with NSNumber like write it to disk, put it in an array, dictionary whatever .... 

// Then pull it back out 
double myOldValue = [number doubleValue]; 

가 double 값을 빼려면 (I가 "중단", "백그라운드로"또는 의미하는 것을 해석하고 있습니다)에 쓰기 시도 NSUserDefaults 전에 앱이 백그라운드로 설정되어 있고 앱이 다시 시작될 때 앱을 다시 당깁니다.

// Write a double to NSUserDefaults 
[[NSUserDefaults standardUserDefaults] setDouble:myValue forKey:@"myDoubleValue"]; 

// Write an NSNumber to NSUserDefaults 
[[NSUserDefaults standardUserDefaults] setObject:number forKey:@"myNumberWithDoubleValue"]; 

// Extract double from NSUserDefaults 
double myReallyOldDoubleValue = [[NSUserDefaults standardUserDefaults] doubleForKey:@"myDoubleValue"]; 

// Extract NSNumber from NSUserDefaults 
NSNumber* myReallyOldNumberValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"myNumberWithDoubleValue"]; 

아니면 사이비 코드

:

NSNumber *someValue = [NSNumber numberWithDouble:0.0]; 

some kind of data here 
looping code { 

    nslog(save number) 

    someValue = [NSNumber numberWithDouble:3.1412]; 

    delete all data that has been stored 
} 

저장하시오 전화 번호에 대한 포인터 또는 instance variable 또는 클래스 property

+0

그래, 어쨌든 나는 double 값을 바꿀 수있다. Like : myValue = 36.3 – Deni

+0

값을 언제 바꿀까요? 'NSNumber'를 변경하기 위해서는 새로운 NSNumber를 생성하면됩니다. 불변입니다. 네가하려는 일을 완전히 이해하지 못한다. 배열에 저장하려면 NSNumber를 사용해야합니다. 그렇지 않으면 일반적인 데이터 유형이 적합 할 것이라고 생각합니다. – Aaron

+0

내 업데이트를 참조하십시오. 루프가 시작될 때 모든 것이 삭제되기 때문에 새로운 것을 만들 수는 없습니다. – Deni

0

당신 사용

NSNumber *number = @(myDouble); 

더블 내로의 NSNumber를 변경하려면 NSNumber을, 또는 10 진수 서브 클래스 NSDecimalNumber이다 : 그것을 저장하는 시간이 올 때,이 같은 숫자를 얻을 수 있습니다 . 객체 자체가 변경되지 않는다고해서 주어진 변수가 가리키는 값을 변경할 수 없다는 것을 의미하지는 않습니다. 예를 들면 다음과 같습니다.

NSDecimalNumber *a = [NSDecimalNumber numberWithInt:2]; 
a = [a decimalNumberByAdding:[NSDecimalNumber numberWithInt:12]]; 
a = [a decimalNumberByDividing:[NSDecimalNumber numberWithDouble:2.3]]; 

이는 실제 int와 같으며이 또한 변경할 수 없습니다.

double a = 2; 
a = a + 12; 
a = a/2.3; 

즉, NSDecimalNumber은 매우 장황합니다. 기본 유형 (예 : 달러가 아닌 센트로 계산)으로 벗어날 수 있다면 바람직 할 수 있습니다.

+0

이 말이 맞아요. 내 코드에서 작동하는지 테스트 해보고 알려 드리겠습니다. :-) – Deni