Тип возвращаемой переменной в функции target-c (с Какао) - PullRequest
2 голосов
/ 17 июля 2010

У меня есть класс конфигурации в моем приложении target-c, которое читает файл PLIST с данными конфигурации.Затем я хотел бы иметь возможность прочитать значение для любой клавиши с помощью одной функции, что-то вроде этого:

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

Проблема: некоторые значения в файле конфигурации являются строками, другие - целыми числами илидаже словари.Как вы можете видеть, я оставил тип возврата пустым в этом примере, так как не знаю, что там писать.Есть ли способ, которым функция может возвращать различные типы данных, и если да, то как мне объявить это?

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 17 июля 2010

Самым безопасным является предоставление отдельного метода для каждого поддерживаемого вами типа:

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

Вы можете предоставить универсальный метод в случае, если вызывающая сторона хочет работать в общем случае:

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

В этом случае вы бы вернули NSString *, NSNumber *, NSDictionary * и т. Д.

1 голос
/ 17 июля 2010

использовать динамическую типизацию Objective-C с id

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