0

NSUserDefaults objectForKeyメソッドは、nilではなく「0」の文字列を返すのはなぜですか?

ドキュメントには、

戻り値指定されたキーに関連付けられたオブジェクト。キーが見つからなかった場合はnil。

NSDate * date = [[NSUserDefaults standardUserDefaults] objectForKey:OVERTIME_RATE_MARKER];

    if (date) {
      //something
    }

上記の条件ステートメントは常に実行されます。これは、オブジェクトが見つからない場合、クラスのオブジェクトを返すためです:__NSCFStringwith"0"。「nil」を返す必要がある場合

もちろん、文字列の「0」をテストすることもできます。しかし、私は本当にそれをしたくありません。

タイプにもIDを使ってみました。「0」の__NSCFStringを取得し続けます。

誰かが私がこれを理解するのを手伝ってもらえますか?

どんな助けでも大歓迎です!

ありがとうございました

4

1 に答える 1

2

nilこの API は、キーが存在しない場合に確実に戻ります。キーが設定で既に設定されている@"0"か、このコードがそれを読み取る前に、コード内の別の場所にキーを設定しています。

于 2012-09-28T22:52:37.890 に答える