我想编写一个帮助器类来从我的info.plist中获取值,并将它们转换为正确的类型。所以,如果我尝试访问一个实际上是数字作为日期的属性,我应该回到零或错误。
我无法想出一种检查类型的好方法。我试过阅读[val class]
。在下面的示例中,它以__NSTaggedDate
的形式返回日期值,这似乎是我不想依赖的实现细节。
- (NSDate *)dateConfig:(NSString *)name
{
_configs = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"myConfigDictionary"];
id val = [_configs objectForKey:name];
// TODO how do I tell?
if([val class] != ???)
{
return nil;
}
return val;
}
我想对所有其他plist类型也可靠地执行此操作。完成这项工作的优雅方法是什么?
答案 0 :(得分:1)
您正在寻找消息isKindOfClass:
if([val isKindOfClass:[NSNumber class]])
{
return (NSNumber *)val;
}
else
{
return nil;
}
请注意,还有isMemberOfClass:
,但您很少会想要这个。许多基础对象都是基于Core Foundation的(即NSString大部分时间都是NSCFString)。