NSUserDefault で値を取得するメソッドの返り値メモ


データが無い場合

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d removeObjectForKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // NO
  NSLog(@"%d", [d integerForKey:@"k"]); // 0
  NSLog(@"%f", [d floatForKey:  @"k"]); // 0.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // null
  NSLog(@"%@", [d stringForKey: @"k"]); // null
  NSLog(@"%@", [d valueForKey:  @"k"]); // null
  NSLog(@"%@", [d URLForKey:    @"k"]); // null
  NSLog(@"%@", [d arrayForKey:  @"k"]); // null
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // null
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // null

整数値777をセットした場合

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d setInteger:777 forKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // YES
  NSLog(@"%d", [d integerForKey:@"k"]); // 777
  NSLog(@"%f", [d floatForKey:  @"k"]); // 777.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // 777
  NSLog(@"%@", [d stringForKey: @"k"]); // 777
  NSLog(@"%@", [d valueForKey:  @"k"]); // 777
  NSLog(@"%@", [d URLForKey:    @"k"]); // null
  NSLog(@"%@", [d arrayForKey:  @"k"]); // null
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // null
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // null

  // 型のチェック
  NSLog(@"%@", [[d objectForKey:@"k"] class]); // __NSCFNumber

0 の場合は boolForKey は NO を返すよ。

BOOL値がセットされている場合

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d setBool:YES forKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // YES
  NSLog(@"%d", [d integerForKey:@"k"]); // 1
  NSLog(@"%f", [d floatForKey:  @"k"]); // 1.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // 1
  NSLog(@"%@", [d stringForKey: @"k"]); // 1
  NSLog(@"%@", [d valueForKey:  @"k"]); // 1
  NSLog(@"%@", [d URLForKey:    @"k"]); // null
  NSLog(@"%@", [d arrayForKey:  @"k"]); // null
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // null
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // null

  [d setBool:NO forKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // NO
  NSLog(@"%d", [d integerForKey:@"k"]); // 0
  NSLog(@"%f", [d floatForKey:  @"k"]); // 0.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // 0
  NSLog(@"%@", [d stringForKey: @"k"]); // 0
  NSLog(@"%@", [d valueForKey:  @"k"]); // 0
  NSLog(@"%@", [d URLForKey:    @"k"]); // null
  NSLog(@"%@", [d arrayForKey:  @"k"]); // null
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // null
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // null

  // 型のチェック
  NSLog(@"%@", [[d objectForKey:@"k"] class]); // __NSCFBoolean
  NSLog(@"%s", [[d objectForKey:@"k"] isKindOfClass:[NSValue class]] ? "YES" : "NO" ); // YES

@”データ” という文字列をセットした場合

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d setObject:@"データ" forKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // NO
  NSLog(@"%d", [d integerForKey:@"k"]); // 0
  NSLog(@"%f", [d floatForKey:  @"k"]); // 0.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // データ
  NSLog(@"%@", [d stringForKey: @"k"]); // データ
  NSLog(@"%@", [d valueForKey:  @"k"]); // データ
  NSLog(@"%@", [d URLForKey:    @"k"]); // // %E3%83%87%E3%83%BC%E3%82%BF -- file://localhost/
  NSLog(@"%@", [d arrayForKey:  @"k"]); // null
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // null
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // null

  // 型のチェック
  NSLog(@"%@", [[d objectForKey:@"k"] class]); // __NSCFConstantString

文字列の YES とか yes とか yES とかをセットすると boolForKey は YES を返すよ。でも true では NO を返す。

配列 @[@" A ", @2] をセットした場合

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d setObject:@[@"A", @2] forKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // NO
  NSLog(@"%d", [d integerForKey:@"k"]); // 0
  NSLog(@"%f", [d floatForKey:  @"k"]); // 0.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // (\nA,\n2\n)
  NSLog(@"%@", [d stringForKey: @"k"]); // null
  NSLog(@"%@", [d valueForKey:  @"k"]); // (\nA,\n2\n)
  NSLog(@"%@", [d URLForKey:    @"k"]); // null
  NSLog(@"%@", [d arrayForKey:  @"k"]); // (\nA,\n2\n)
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // (\nA,\n2\n)
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // (null)

  // 型のチェック
  NSLog(@"%@", [[d objectForKey:@"k"] class]); // __NSCFArray

※配列に プロパティ値として使用できないものを含めると、
空の配列がセットされてしまう。

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d setObject:@[@"Hoge", [[NSObject alloc] init]] forKey:@"k"];

  NSLog(@"%@", [d objectForKey: @"k"]); // (\n)
  NSLog(@"%@", [[d objectForKey:@"k"] class]); // __NSCFArray

setObject の部分で

Attempt to insert non-property value '(
    Hoge,
    "<NSObject: 0x1ed41840>"
)' of class '__NSArrayI'.  Note that dictionaries and arrays in property lists must also contain only property values.

と表示される。

NSURL をセットした場合

  NSUserDefaults *d = [NSUserDefaults standardUserDefaults];

  [d setURL:[NSURL URLWithString:@"http://fernweh.jp"] forKey:@"k"];

  NSLog(@"%s", [d boolForKey:@"k"] ? "YES" : "NO" ); // NO
  NSLog(@"%d", [d integerForKey:@"k"]); // 0
  NSLog(@"%f", [d floatForKey:  @"k"]); // 0.000000
  NSLog(@"%@", [d objectForKey: @"k"]); // <62706c69 73743030 d4010203 04050819 1a542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572d106 0754726f 6f748001 a4090a11 1255246e 756c6cd3 0b0c0d0e 0f105b4e 532e7265 6c617469 7665574e 532e6261 73655624 636c6173 73800280 0080035f 10116874 74703a2f 2f666572 6e776568 2e6a70d2 13141518 5824636c 61737365 735a2463 6c617373 6e616d65 a2161755 4e535552 4c584e53 4f626a65 6374554e 5355524c 12000186 a05f100f 4e534b65 79656441 72636869 76657208 11161f28 32353a3c 41474e5a 62696b6d 6f838891 9c9fa5ae b4b90000 00000000 01010000 00000000 001b0000 00000000 00000000 00000000 00cb>
  NSLog(@"%@", [d stringForKey: @"k"]); // null
  NSLog(@"%@", [d valueForKey:  @"k"]); // <62706c69 73743030 d4010203 04050819 1a542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572d106 0754726f 6f748001 a4090a11 1255246e 756c6cd3 0b0c0d0e 0f105b4e 532e7265 6c617469 7665574e 532e6261 73655624 636c6173 73800280 0080035f 10116874 74703a2f 2f666572 6e776568 2e6a70d2 13141518 5824636c 61737365 735a2463 6c617373 6e616d65 a2161755 4e535552 4c584e53 4f626a65 6374554e 5355524c 12000186 a05f100f 4e534b65 79656441 72636869 76657208 11161f28 32353a3c 41474e5a 62696b6d 6f838891 9c9fa5ae b4b90000 00000000 01010000 00000000 001b0000 00000000 00000000 00000000 00cb>
  NSLog(@"%@", [d URLForKey:    @"k"]); // http://fernweh.jp
  NSLog(@"%@", [d arrayForKey:  @"k"]); // null
  NSLog(@"%@", [d stringArrayForKey:@"k"]); // null
  NSLog(@"%@", [d dictionaryForKey: @"k"]); // null

  // 型のチェック
  NSLog(@"%@", [[d objectForKey:@"k"] class]); // __NSCFData

ObjectForKey で取得すると NSData が返ってくる。。

  1. コメントはまだありません。

  1. トラックバックはまだありません。

*


Advertisement