2013-04-30 71 views
-2

我需要存儲一個十進制數字,並且字符串,整數或數字都無法做我想要的。我無法使用NSNumber,因爲我需要稍後才能更改它。存儲十進制數字

我搜索了整個互聯網,但我似乎無法找到它。

答案可能很簡單。

謝謝!

UPDATE:

一些種類的數據在這裏

循環代碼{

的NSLog(保存號);

保存編號3.1415926535;

刪除已儲存

//現在字符串不存在了 }

我需要能夠保存外循環,這個數字在「某些類型的數據在這裏」所有數據因爲當循環開始時,從循環創建的所有內容都將被刪除。

+1

表情符號不符合Stackoverflows質量標準? – Deni 2013-04-30 21:21:06

+0

難道你不能只用一個雙? – PurpleAlien 2013-04-30 21:24:37

+2

你是什麼意思「商店」呢?請澄清你的問題,並提供一些代碼,以更好地解釋你想要做的事情。 'NSNumber'有一堆方便的方法來存儲和檢索整數,雙精度,布爾等等。事實上'NSNumber'是存儲這些類型的首選方法。 – Aaron 2013-04-30 21:24:47

回答

0

只需使用一個double。當談到時間來存放它,你可以得到一些這樣的:

NSNumber *number = @(myDouble); 

要改變一個NSNumber成雙,

double myDouble = [number doubleValue]; 
+0

不完全是我想要的,但我明白了;-) – Deni 2013-05-10 07:41:37

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]; 

拉雙重價值在應用軟件關閉後(我解釋這意味着「中背景」或「暫停」),試圖將其寫入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

好的,有無論如何我可以改變雙重價值。像:myValue = 36.3 – Deni 2013-04-30 21:33:17

+0

你什麼時候改變這個值?要更改'NSNumber',您只需創建一個新的NSNumber。它是不可變的。我不完全明白你想要做什麼。如果你想將它存儲在一個數組中,你應該使用'NSNumber',否則一般數據類型應該適合你,我想。 – Aaron 2013-04-30 21:37:33

+0

查看我的更新。我不能只創建一個新的,因爲當循環開始時,所有東西都被刪除。 – Deni 2013-04-30 21:49:55

0

可以使用NSNumber,或者是十進制的子類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 2013-04-30 21:52:30