LoginSignup
17
17

More than 5 years have passed since last update.

NSUserDefaultsにproperty経由でアクセスするためのカテゴリ

Last updated at Posted at 2014-01-08

NSUserDefaultsは非常に便利ですが、キーの名前をハードコードするのは保守性に問題があります。
文字列定数を定義する方法もありますが、僕はカテゴリを作成して、プロパティとしてアクセスするようにしています。

メリットはざっと下記の通りです。

  • 型制約がかけられる
  • キーとなる文字列が一カ所で定義されるので保守が簡単になる
  • キーとなる文字列と、propertyの名前を独立に管理できる
  • 必要に応じてgetterをフックできる。
    • たとえばキーを変更した場合に、古いキーからも値を読めるようにする

以下サンプルコードです。
メソッド名がppで始まっているのは、僕がカテゴリでメソッドを足す時のルールです。

NSUserDefaults+PPUtils.h
#import <Foundation/Foundation.h>

@interface NSUserDefaults (PPUtils)

@property BOOL ppABool;

@end
NSUserDefaults+PPUtils.m
#import "NSUserDefaults+PPUtils.h"

@implementation NSUserDefaults (PPUtils)

- (BOOL)ppABool
{
    return [self boolForKey:@"ppABool"];
}

- (void)setPpABool:(BOOL)ppABool
{
    [self setBool:ppABool forKey:@"ppABool"];
}

@end

17
17
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
17
17