Как получить локализованную строку для 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!)
Другие вопросы по тегам