2013-09-28 44 views
2

我有三個視圖控制器的應用程序。首先是UIViewController與三個UITextField的用戶放置一些數字。這些數字作爲字符串屬性存儲到我的CoreData實體中。小數點不能用逗號做數學運算。需要點

其次是UITableView,我從CoreData顯示我的存儲數據爲新的單元格。 第三個是詳細的UIViewController,我向用戶顯示他以前插入的所有數字。 問題是當我在textField小數點上設置時,用戶有數字和逗號,但我的函數需要帶點的數字來進行雙精度計算。 使用逗號我不能使數學函數爲[.....] * [...] = ....,因爲它不起作用。

任何想法我可以弄明白嗎? 我可以簡單地將該逗號更改爲點嗎?

我有這樣的代碼:

NSNumberFormatter*nf = [[NSNumberFormatter alloc]init]; 
[nf setNumberStyle:NSNumberFormatterDecimalStyle]; 

double result = [myString doubleValue] * [myOtherString doubleValue]; 

回答

6

你要根據用戶的語言環境的十進制鍵盤有逗號或句號(點)。這樣用戶可以按照他們習慣的輸入值。爲了讓您對數值進行數學運算,您需要使用NSNumberFormatter將輸入的字符串轉換爲double值。一旦你這樣做,你的數學公式將起作用。如果字符串是用戶輸入的,請勿使用doubleValuefloatValueNSString轉換爲doublefloat。始終使用NSNumberFormatter正確處理用戶的區域設置。

根據添加到問題中的代碼進行更新。

您不使用數字格式化程序。你正在做我說的不要做的事。你的代碼更改爲:

double firstValue = [[nf numberFromString:myString] doubleValue]; 
double secondValue = [[nf numberFromString:myOtherString] doubleValue]; 
double result = firstValue * secondValue; 
+0

我嘗試做setNumberStyle:NSNumberFormatterDecimalStyle但它不起作用。我怎樣才能做到這一點? – Mayo323

+0

是的,它的工作原理。發佈代碼(用代碼更新您的問題),嘗試將輸入的文本轉換爲「double」或「float」。 – rmaddy

+0

@ Mayo323根據您發佈的代碼查看我更新的答案。 – rmaddy

-2

解決方案很簡單:

1. Go to Settings > General > International > Regional Format 
    2. Now select "United States" 

現在運行你的應用程序,看到點而不是十進制墊鍵盤逗號(,)()。

+2

「美國」並不是我們世界上唯一的默認設置。 –

+0

是的,並確保你在應用程序的幫助頁面上寫下這個「有用的」提示! –

+0

對我來說它顯示由於地區的逗號是法國。我改變了它,然後dot代替了逗號。所以它的地區具體。 –