我有一个NSDictionary,以及在给定键的情况下如何获取数据类型的值

可能吗?

最佳答案

您可以检查您接受的变体

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]);

09-30 11:29