web-dev-qa-db-ja.com

変数は書き込まれましたが、読み取られませんでしたか?

次の警告が表示されますvariable 'isTaken' was written to, but never read次のコードで:

func textFieldShouldEndEditing(textField: UITextField) -> Bool {

        var isTaken: Bool = false

        if textField == usernameTxt { var query = PFQuery(className: "_User")
        query = PFQuery(className: "_User")
        query.whereKey("username", equalTo: usernameTxt.text!)
        query.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]?, error: NSError?) in
            if error == nil {
                if (objects!.count > 0){

                    isTaken = true

                    }
                } else {
                    print("Username is available. ")
                }
            } else {
                print("error")
            }
          }
        }
        return true
    }

警告が表示されるのはなぜですか?

13
Mike Strong

エラーが言うようにvariable 'isTaken' was written to, but never readは、isTakenインスタンスを作成し、それに値を割り当てているが、使用されていないことを意味します。

16
Dharmesh

ステートメントを削除するだけです。

var isTaken: Bool = false
isTaken = true

値は、ifの定義と割り当てに使用されることはないので、ifは何も実行しません。

5
zaph

基本的にはisTakenに値が割り当てられていると言いますが、実際にはコードでは何もしません。これを使用したり、その値をチェックしたりすることはないため、変数が不要であるという警告にすぎません。

実際にisTakenを使用していて、コンパイラーが何らかの理由で認識しない場合は、直後に別の行を追加できます

isTaken = true;

それはただ言う

isTaken;

または、コードの他の場所で使用している場合は、isTakenをグローバルにします。

3
mjmayank

デッドコードを指摘するコンパイラ警告。おそらく、いくつかのコードをコピーして貼り付け、不要なコードをいくつか削除しました。その際、ローカル変数isTakenの使用はなくなりました。したがって、その値が割り当てられるだけで、メリットの実現には使用されません。単にisTakenの周りのコードを削除するか、ダブルチェックしてその周りの機能を元に戻すことができます:)。

2
Abhinav

値を設定したvarについて警告しますが、その後は操作しないでください。

コードをクリーンで安全に保つことは非常に重要です。そのため、xcodeはコードを少し手助けするだけです。

isTaken = true;

これが、値をisTaken変数に設定したポイントです。

コードを見直して、この変数の使用について考えてみてください。

0
dede.exe