我的objective-c app中有一个配置类,它读取带有配置数据的PLIST文件。然后,我希望能够通过单个函数读取任何键的值,如下所示:
- () getValueforKey:(NSString *)key {
some magic here....
return value;
}
问题:配置文件中的某些值是字符串,其他值是整数或甚至字典。正如你所看到的,我在这个例子中留下了返回类型的空白,因为我不知道在那里写什么。函数是否有任何方式可以返回不同类型的数据,如果有,我该如何声明?
非常感谢!
答案 0 :(得分:5)
最安全的是为您支持的每种类型提供一种独特的方法:
- (NSString *)stringForKey:(NSString *)key;
- (int)intForKey:(NSString *)key;
- (float)floatForKey:(NSString *)key;
- (NSDictionary *)dictionaryForKey:(NSString *)key;
...
如果调用者想要一般地工作,你可以提供一个通用的:
- (id)objectForKey:(NSString *)key;
在这种情况下,您将返回NSString *
,NSNumber *
,NSDictionary *
等。
答案 1 :(得分:1)
使用 id
来使用Objective-C的动态类型- (id) getValueforKey:(NSString *)key {
some magic here....
return value;
}