我创建了一个名为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'。
我做错了什么?所有输入和输出类型似乎都匹配。
答案 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
}
}