2

私は NSDictionary を持っており、キーを指定して値のデータ型を取得するもの

出来ますか?

4

2 に答える 2

4

受け入れるバリアントを確認できます

id objectValue = [dictionary valueForKey:@"SomeKey"];
if ([objectValue isKindOfClass:[NSString class]]) {
    //Object is a NSString
} else if ([objectValue isKindOfClass:[NSArray class]]) {
   //Object is a NSArray
} else if ([objectValue isKindOfClass:[NSDictionary class]]) {
   //Object is a NSDictionary
} else if ([objectValue isKindOfClass:[NSNumber class]]) {
   //Object is a NSNumber
}

などなど..このパターンでは、アプリがサポートするすべての型を処理するだけです。アプリがこのパターンでサポートしていない値を無視するか、値のデータ型がサポートされていない場合は別の方法で正常に失敗します

それがどのクラスであるかを把握するには(たとえば、アプリケーションをデバッグするため)、次のことができます。

NSString *className = NSStringFromClass([objectValue class]);
于 2013-06-15T21:24:33.913 に答える
0

NSStringFromClassタイプを取得するために使用できるか、使用できなかったisKindOfClass:

NSDictionary *dictionary = @{
                           @"string": @"Something",
                           @"number": @(1),
                           @"null": [NSNull null],
                           @"custom": [[CustomType alloc] init]
                           };


[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
  NSLog(@"type = %@", NSStringFromClass([obj class]));
}];

出力:

type = CustomType
type = NSNull
type = __NSCFNumber
type = __NSCFConstantString
于 2013-06-15T21:29:35.050 に答える