Подтвердить что ты не робот

Объявлять статические переменные-члены как 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;
4b9b3361

Ответ 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]