2016-09-25 27 views
1

我已经搜索并阅读了许多似乎有同样问题的主题,但我无法找到任何类似我只是将现有的项目从swift 2.x(不记得是哪个版本)转换成Xcode8/swift 3.代码在应用程序商店中生效,所以清楚地工作在之前。迁移到迅速3现在变得错误“参数标签”(_ :)'不匹配任何可用的重载

现在我得到请看我的代码如下:

//GLOBAL VARIABLES - NEW------------------------------------- 

var userEmail = NSString() 
var userName = NSString() 
var userPassword = NSString() 
var userNamePass = NSString() 

class ViewController: UIViewController, UITextFieldDelegate { 

@IBOutlet weak var loginUserName: UITextField! 
@IBOutlet weak var loginPassword: UITextField! 


@IBAction func loginButton(_ sender: AnyObject) { 

    userName = NSString(loginUserName.text) //throws error "argument labels '(_:)' do not match any available overloads 
    userPassword = NSString(loginPassword.text) //throws error "argument labels '(_:)' do not match any available overloads 
    userNamePass = NSString("\(userName.uppercased)\(userPassword.uppercased)") //throws error "argument labels '(_:)' do not match any available overloads 


//other code in the login function 

} //end login function 

回答

2

有它需要在夫特3

  • 的重大变化,所有的方法/函数提供一个标签为第一个参数。可以通过下划线字符来抑制该规则,但苹果改变了所有相关方法以符合该规则。所以,你必须写

    userName = NSString(string:loginUserName.text) 
    

出现另一个问题,因为uppercased已更改为uppercased()


为什么您从东西String这是一个String反正做?

顺便说一下,这是Swift。使用String而不是NSString

var userEmail = "" 
var userName = "" 
var userPassword = "" 
var userNamePass = "" 

userName = loginUserName.text ?? "" 
userPassword = loginPassword.text ?? "" 
userNamePass = userName.uppercased() + userPassword.uppercased() 
+0

我曾经使用过NSString,因为我不认为.uppercase方法可用于String类型。我已转换为字符串,似乎已解决了直接的问题。欣赏小费。 –

+0

虽然这提供了很好的建议,但实际上并没有回答被问到的问题。我会更新答案来解释什么是错误的以及如何解决它,然后提供这个建议作为编写代码的正确方法。 – rmaddy

+0

谢谢rmaddy。我回来发布相同的东西...我需要了解什么改变了迅速3现在抛出一个错误的行代码在swift 2.x工作正常。将某些东西转换为新的类型是非常标准的东西,所以我很惊讶地发现这会引发错误。谢谢大家。 –

0

尝试添加“string:”参数标签到所有的N SString初始化器调用。例如,下面的代码工作在一个运动场(的XCode 8 GM与夫特3):

let userName = NSString(string: "hello") 
print(userName) 
0

尝试在初始化程序中使用“string:”。

userName = NSString(string: loginPassword.text)

此外,如果loginPassword.text是可选的它可能需要解开。

+0

这是非常有用的,有助于解释什么可能在swift 3中将变量转换为不同类型。 –

相关问题