2016-09-25 11 views
1

この同じ問題があるような多くのトピックを検索して読みましたが、 Xcode8/swift3に既存のプロジェクトを迅速に2.xから変換しました。コードはアプリストア内に存在しているので、以前は明らかに動作していました。swift 3に移行しました "引数ラベル '(_ :)'は使用可能なオーバーロードと一致しません

非常に簡単な変数初期化子文のように思われるものに、次のエラー以下の私のコードを参照してください:すべてのNに引数ラベル:「文字列」を追加

//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) 
    

を記述する必要がありuppercaseduppercased()


に変更されたため、他の問題が発生するのはなぜあなたはとにかくStringある何かからStringを作成するのですか?

ところで、これはスウィフトです。 NSStringではなくStringを使用してください。

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

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

私はNSStringを使用していました。なぜなら、.uppercaseメソッドがString型で利用できるとは思わなかったからです。私はStringに変換されているとすぐに問題を解決したようだ。先端を感謝します。 –

+0

これは良い示唆を提供しますが、実際に質問されている質問には答えません。私は何が間違っていたか、それを修正する方法を説明するために答えを更新し、コードを書くための適切な方法としてこの提案を提供します。 – rmaddy

+0

ありがとうrmaddy。私は同じことを投稿するために戻ってきました...迅速な2.xでうまくいったコード行にエラーがスローされるように、迅速な3で変更された内容を理解する必要があります。私は何かを新しいタイプに変換するのはかなり標準的なものなので、私はこれがエラーを投げるのを見て非常に驚いています。みんなありがとう。 –

0

てみてくださいSString初期化子呼び出し。たとえば、次のコードは遊び場(XCodeのスウィフト3と8 GM)上で動作します:

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

「イニシャライザ」内で「文字列」を使用してください。

userName = NSString(string: loginPassword.text)

loginPassword.textがオプションである場合にも、それはアンラップする必要があるかもしれません。

+0

これは非常に役に立ち、変数を別のタイプに変換することに関して、迅速に変更された可能性のあるものを説明するのに役立ちます。 –

関連する問題