Swift转换中的自定义类

时间:2015-11-15 12:57:24

标签: swift

我创建了一个名为PhoneTranslator的自定义类(基于Xamarin的“Hello,iOS”指南)。它看起来像这样:

class PhoneTranslator {
    func ToNumber(raw:String) -> String {
      var newNumber = raw.isEmpty ? "" : raw.uppercaseString
      //newNumber operations...
      return newNumber
    }
}

然后我有一个ViewController标准类。我想这样做:

var translatedNumber : String?

    if let inputText = PhoneNumberTextField.text //getting text from UITextField
    {
        translatedNumber = PhoneTranslator.ToNumber(inputText) //error
    }

然后与ToNumber方法一致,我得到一个错误无法将'String'类型的值转换为预期的参数类型'PhoneTranslator'

我做错了什么?所有输入和输出类型似乎都匹配。

2 个答案:

答案 0 :(得分:1)

将您的代码更改为

class PhoneTranslator {
    class func ToNumber(raw:String) -> String {
        var newNumber = raw.isEmpty ? "" : raw.uppercaseString
        return newNumber
    }
}

您的功能不是类功能。因此,您首先需要一个实例。上面的代码将ToNumber函数定义为class func

或者首先创建PhoneTranslator的实例:

translatedNumber = PhoneTranslator().ToNumber(inputText)

请注意()之后的PhoneTranslator

答案 1 :(得分:0)

或者不需要创建类函数。您可以拥有一个共享实例,它将是整个应用程序的单个对象。使用此单例对象,您可以调用 PhoneTranslator 方法

delay(1000)

你可以这样称呼它

class PhoneTranslator {

    static let sharedInstance = PhoneTranslator()

    func ToNumber(raw:String) -> String {
          var newNumber = raw.isEmpty ? "" : raw.uppercaseString
          //newNumber operations...
          return newNumber
          }
    }