2016-11-12 18 views
1

最近私のプロジェクトをSwift 3にアップグレードしましたが、文字列の補間エラーで何らかの問題が発生しています。Swift 3の文字列補間セグメントエラー

マイコード:

let coordString = "\(locationCoordinate.latitude) \(locationCoordinate.longitude)".stringByReplacingOccurrencesOfString(".", withString: ",") 

エラーは言う:

を静的メンバー 'のinit(stringInterpolationSegmentが:)' '文字列'

どう

タイプのインスタンスで使用することはできませんエラーを解決できますか?

+0

基本的に現在のロケールに応じて数字の小数点記号を表示するには、 '(NS)Numberformatter'を使用します。さらに 'stringByReplacingOccurrencesOfString'はSwift 3で名前が変更されました。 – vadian

+0

私は迅速に新しいです。ありがとう –

答えて

0

方法は、スウィフト3に名前が変更されました:replacingOccurrences(of...を使用して小数点の交換

let coordString = "\(locationCoordinate.latitude) \(locationCoordinate.longitude)".replacingOccurrences(of: ".", with: ",")  
1

は良いプログラミング習慣ではありません。

ユーザーの現在のロケールを考慮するには、常にNumberFormatterを使用する必要があります。

これは一例です。現在のロケールに応じて小数点記号が表示されます。明示的にカンマを使用したい場合は、locale行のコメントを解除し、ロケール識別子を好みのものに設定します。

let latitude = 52.5 
let longitude = 13.0 
let formatter = NumberFormatter() 
formatter.numberStyle = .decimal 
// formatter.locale = Locale(identifier: "DE_de") 

let coordString = formatter.string(from: NSNumber(value:latitude))! + " " + formatter.string(from: NSNumber(value:longitude))! 
+0

なぜこれがより良い方法であるか私に説明してください。 –

+0

一部の言語(ロケール)では、 "。" 10進形式(英語など)で使用する必要がありますが、その他の場合は「、」を使用する必要があります(多くのヨーロッパ言語など)。だから、単に "。" "、"はおそらくローカリゼーションを考慮していないため、良い考えではありません。フォーマッタに、 "。"を使用するかどうかを決める(設定したロケールに基づいて)ことをお勧めします。または "、" ...私はそれが@vadianが得ていると思う。 –