Объявлять статические переменные-члены как Java в Objective-C
Как я могу создать класс Objective-C с переменными уровня класса, такими как этот класс Java?
public class test
{
public static final String tableName = "asdfas";
public static final String id_Column = "_id";
public static final String Z_ENT_Column = "Z_ENT";
}
Я хочу получить к ним доступ без создания экземпляра, например:
String abc = test.tableName;
Ответы
Ответ 1
Похоже, вы хотите создать константы (поскольку вы используете final
в своем вопросе). В Objective-C для этого вы можете использовать extern
.
Сделайте что-то вроде этого:
1) Создайте новый класс Objective-C с именем Constants.
2) В файле заголовка (.h):
extern const NSString *SERVICE_URL;
3) В файле реализации (.m):
NSString *SERVICE_URL = @"http://something/services";
4) Добавьте #import "Constants.h"
в любой класс, где вы хотите его использовать
5) Доступ непосредственно как NSString *url = SERVICE_URL;
Если вы не хотите создавать константы и просто хотите использовать static
в Objective-C, к сожалению, вы можете использовать только static
в файле реализации (.m). И к ним можно получить доступ без предварительного указания имени класса.
Например:
static NSString *url = @"something";
Надеюсь, это поможет.
Ответ 2
Попробуйте...
static NSString *CellIdentifier = @"reuseStaticIdentifier";
Вы можете получить доступ к прямому значению с использованием свойства синтеза
или вы можете использовать NSUserDefaults для хранения и получения значения
Описание
@interface MyClass : NSObject
+(NSString *)myFullName;
@end
Реализация:
#import "MyClass.h"
@implementation MyClass
static NSString *fullName = @"Hello World";
+(NSString *)myFullName{
return fullName;
}
@end
Использование:
#import "MyClass.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}
@end
Надеюсь, я помог.
Ответ 3
Вам нужно использовать метод класса для доступа ко всему, что можно назвать без создания экземпляра.
@interface MyClass : NSObject
+(NSString *)myFullName;
@end
Реализация:
#import "MyClass.h"
@implementation MyClass
static NSString *[email protected]"anoop vaidya";
+(NSString *)myFullName;{
return fullName;
}
@end
Как использовать:
#import "MyClass.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
NSLog(@"%@",[MyClass myFullName]); //no instance but you are getting the value.
}
@end
Ответ 4
Objective-C не имеет переменных класса
Я бы рекомендовал поместить статический NSString в файл реализации вашего класса и предоставить методы класса для доступа к нему
@implementation MyClass
static NSString* str;
Ответ 5
Можно сделать так:
@interface Test
{
static NSString *tableName;
}
+(NSString *) getTableName;
@end
@implementation Test
+ (NSString *)getTableName
{
return tableName;
}
@end
И затем вы его получите:
NSString *name = [Test getTableName];
Ответ 6
Я думаю, что лучший способ и более используемый - использовать перечисления, такие как
enum{
GSPAYMENT_METHOD_CARD = 1,
GSPAYMENT_METHOD_CASH = 2,
GSPAYMENT_METHOD_VOID = 3
};
typedef NSUInteger PaymentMethodType;
Как раз перед @interface GSPaymentMethod
Таким образом вы можете использовать эти константы в любом месте, просто включив .h
файл
Например
[self newPayment:GSPAYMENT_METHOD_CASH]