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箇所にまとめられスッキリします。