开发者

Variable return type in objective-c function (with Cocoa)

I have a configuration class in my objective-c app which reads a PLIST file with configuration data. I would then like to be able to read the value for any key with a single function, something like this:

- () getValueforKey:(NSString *)key {
     some magic here....
     return value;
}

The issue: Some of the values in the config file are Strings, others are int开发者_如何学编程s or even Dictionaries. As you can see I left the return-type blank in this example as I do not know what to write there. Is there any way that a function can return different types of data, and if so, how do I declare this?

Thanks a lot!


The safest is to provide a distinct method for each type you support:

- (NSString *)stringForKey:(NSString *)key;
- (int)intForKey:(NSString *)key;
- (float)floatForKey:(NSString *)key;
- (NSDictionary *)dictionaryForKey:(NSString *)key;
...

You could supply a generic one in case the caller wants to work generically:

- (id)objectForKey:(NSString *)key;

In this case you would return NSString *, NSNumber *, NSDictionary *, etc.


make use of Objective-C's dynamic typing with id

- (id) getValueforKey:(NSString *)key {
     some magic here....
     return value;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜