1

フォント サイズをユーザーの既定値に保存し、次回の実行時に読み取りたいと考えています。しかし、以下のコードを使用してフォントサイズを確認すると、最初の実行で0が返されますが、例外またはこの値が以前に保存されていないことを示すようなものが予想されます。

let font_size=CGFloat(UserDefaults.standard.float(forKey: "fontsize"))

現在font_sizeは 0 です。これは nil にするか、例外をスローする必要があります。

Apple ドキュメントには次 のように記載されています。指定されたキーに関連付けられた浮動小数点値。キーが存在しない場合、このメソッドは 0 を返します。

でも0は好きじゃないけど、この値が前に保存されているかどうか知りたい!

4

5 に答える 5

3

NSUserDefaultsを使用NSNumberして数値を保持するため、次のように記述できます。

    if UserDefaults.standard.object(forKey: "fontsize") != nil {
        let fontSize = CGFloat(UserDefaults.standard.float(forKey: "fontsize"))
        //use `fontSize`...
    } else {
        //first run...
    }

または:

    if let fontSize = UserDefaults.standard.object(forKey: "fontsize") as? CGFloat {
        //use `fontSize`...
    } else {
        //first run...
    }
于 2016-09-11T16:17:10.220 に答える
2

この値が以前に保存されていないという例外またはそのようなものが期待されます

Swift では例外はサポートされていません

でも0は好きじゃない

独自の基本値を指定するには、registerDefaultsを使用します。

しかし、この値が以前に保存されているかどうかを知りたいです!

ユーザーがフォント サイズ 0 を設定することを許可していないと想定しているため、値が 0 の場合は、まだ設定されていないことを意味します。

于 2016-09-11T16:24:33.420 に答える
1

まず、 という変数の値を 0 にするのは意味がないと思いますfontSize。サイズ0のテキストをどのように持つことができますか? したがって、これは実際にはまったく問題ではありません。

ユーザーが 0 より大きいフォント サイズを選択するように制限するだけです。このようにして、ユーザーの既定値から 0 を取得した場合、値がまだ設定されていないことがわかります。

有効な範囲に 0 が含まれている場合はどうなりますか?

これは強引な解決策ですが、とにかく機能します。

値を保存するときは、常に 1 を追加してください。値が戻ったら、1 を引きます。繰り返しますが、0 を取得すると、値が設定されていないことがわかります。

于 2016-09-11T16:54:22.980 に答える