LoginSignup
7
7

More than 5 years have passed since last update.

BubbleWrapとNSUserDefaultsでお手軽設定管理。

Posted at

BubbleWrapには様々な機能がありますが、その中にNSUserDefaultsを扱う機能があります。

App::Persistence['hoge'] = true
p App::Persistence[name] # => true

こんな感じで型を考慮せず使えて楽ができますが、一工夫を加えて更に楽をします。

class Settings

  class << self
    def instance
      Dispatch.once { @instance ||= Settings.new }
      @instance
    end
  end

  # 各種設定の名前
  Properties = %w(hoge fuga)

  # getter、setterを動的に生成
  Properties.each do |name|
    define_method("#{name}=") do |v|
      App::Persistence[name] = v
    end
    define_method("#{name}") do
      App::Persistence[name]
    end
  end
end
settings = Settings.instance
settings.hoge = 1
settings.fuga = true

p settings.hoge # => 1
p settings.fuga # => true

App::Persistenceをそのまま使うと設定内容と紐づく文字列が複数箇所に散らばってしまいますが、こうすることで1箇所にまとめられスッキリします。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7