Я хотел бы добавить несколько константных ключей для моего приложения, эти константы могут быть доступны в любом месте программы. Поэтому я объявляю константы в файле интерфейса:
#import <UIKit/UIKit.h>
NSString * MIN_INTERVAL_KEY = @"MIN_INTERVAL_KEY";
NSString * MAX_TOBACCO_KEY = @"MAX_TOBACCO_KEY";
NSString * ICON_BADGE = @"ICON_BADGE";
@interface SmokingViewController : UIViewController {
}
И я хотел бы получить к ним доступ из класса MinIntervalViewController:
- (void)viewDidAppear:(BOOL)animated {
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
if (user) {
self.selectedValue = [user objectForKey:MIN_INTERVAL_KEY];
}
[super viewDidAppear:animated];
}
Но приложение показывает ошибку в классе MinIntervalViewController:
Ошибка: 'MIN_INTERVAL_KEY' undeclared (первое использование в этой функции)
Я что-то пропустил? Любая помощь будет принята.
Спасибо
Constants.h
#import <Cocoa/Cocoa.h>
@interface Constants : NSObject {
}
extern int const kExampleConstInt;
extern NSString * const kExampleConstString;
@end
Constants.m
#import "Constants.h"
@implementation Constants
int const kExampleConstInt = 1;
NSString * const kExampleConstString = @"String Value";
@end
Для использования:
#import "Constants.h"
Затем просто вызовите конкретную переменную, которую вы хотите использовать.
NSString *newString = [NSString stringWithString:kExampleConstString];
В файле .h:
extern NSString * const MIN_INTERVAL_KEY;
В одном (!) Файле .m:
NSString * const MIN_INTERVAL_KEY = @"MIN_INTERVAL_KEY";
И то, что вы, похоже, упустили, так это на самом деле импортировать
заголовок файл, объявляющий MIN_INTERVAL_KEY ;-) Итак, если вы объявили его в SmokingViewController.h
, но хотели бы использовать его в MinIntervalViewController.m
, тогда вам необходимо импортировать "SmokingViewController.h"
в вашем MinIntervalViewController.m
. Поскольку Objective-C на самом деле является более или менее расширением для C, применяются все правила видимости C.
Кроме того, отладку подобных вещей помогает щелкнуть правой кнопкой мыши файл .m в Xcode и выбрать «Предварительная обработка». Затем вы видите предварительную обработку файла, то есть после того, как CPP выполнил свою работу. Это то, что ДЕЙСТВИТЕЛЬНО переваривает компилятор C.