2016-11-12 4 views
1

Недавно я обновил свой проект до Swift 3 и столкнулся с некоторыми проблемами при ошибке интерполяции строк.Ошибка сегмента интерполяции строк в Swift 3

Мой код:

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

Ошибка говорит:

Статический член 'Init (stringInterpolationSegment :)' не может быть использован в экземпляре типа 'String'

Как могу ли я решить ошибку?

+0

В основном используется '(NS) Numberformatter' для отображения десятичного разделителя числа в соответствии с текущей локалью. Далее 'stringByReplacingOccurrencesOfString' был переименован в Swift 3. – vadian

+0

Я новичок в быстрой, не могли бы вы написать это в коде. Спасибо –

ответ

0

Метод был переименован в Swift 3:

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

Замена десятичный разделитель с помощью replacingOccurrences(of... не хорошо программирования привычки.

Вы всегда должны использовать 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

Для некоторых языков (локалей), "." следует использовать в десятичном формате (например, на английском языке), но в других случаях следует использовать «,» (например, многие европейские языки). Так что просто замените "." с «,», вероятно, не является хорошей идеей, поскольку она не учитывает локализацию. Лучше разрешить formatter решить (на основе локали, которую вы установили), использовать ли «.». или "," ... Я думаю, что это то, чем занимается @vadian. –