Как получить локализованную строку для CNLabeledValue в swift3
В swift 2 я использую CNLabeledValue.localizedStringForLabel(phoneNumber.label)
и работает отлично.
В swift 3 я попробовал эту строчку CNLabeledValue.localizedString(forLabel: phoneNumber.label!)
но получил generic parameter 'ValueType' could not be inferred
ошибка
Как получить локализованную строку для CNLabeledValue в swift3?
1 ответ
В Свифте 3 CNLabeledValue
объявлен как:
public class CNLabeledValue<ValueType : NSCopying, NSSecureCoding> : NSObject, NSCopying, NSSecureCoding {
//...
}
Это универсальный тип, и если вы используете его в надлежащем контексте, вам не нужно разыгрывать его value
, Swift 3 хорошо выводит ValueType
,
Но в вашем коде Swift не имеет ни малейшего понятия ValueType
, Это немного раздражает, потому что ValueType
не нужно при выполнении метода типа. Но система типов Swift должна быть указана. Если Свифт не может вывести тип ValueType
Вы можете явно дать это.
Попробуй это:
let localizedLabel = CNLabeledValue<NSString>.localizedString(forLabel: phoneNumber.label!)